- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我向数据库(localhost)中的表添加了 100 000 行,从那时起我得到 this error :
java.lang.OutOfMemoryError: GC overhead limit exceeded
我通过输入 consol 解决了问题:
javaw -XX:-UseConcMarkSweepGC
输出的控制台是(请参阅下面的代码了解上下文):
2015-08-02T02:57:22.779+0200|Info: 5
2015-08-02T02:57:22.779+0200|Info: end, time taken: 82755
提取数据库中的一行需要 82 秒(请参阅最后的代码)。当我的行数较少时,它工作正常,所以我想知道:
-XX:-UseConcMarkSweepGC
吗?它有什么作用 ?来自 the doc :Use concurrent mark-sweep collection for the old generation. (Introduced in 1.4.1)
这是我的代码:
@EJB
private ThreadLookUpInterface ts;
@Schedule(hour = "*", minute = "*/1", second = "0", persistent = false)
@Override
public void makeTopThreadList() {
System.out.println("" + ts.getThread(5).getIdthread());
}
我的服务 ejb 像这样:
@Stateless
public class ThreadLookUpService implements ThreadLookUpInterface {
@PersistenceContext(unitName = "my-pu")
private EntityManager em;
private static final String FIND_THREAD_BY_ID = "SELECT t FROM Thethread t WHERE t.idthread=:id";
@Override
public Thethread getThread(int threadId) {
Query query = em.createQuery(FIND_THREAD_BY_ID);
query.setParameter("id", threadId);
try {
Thethread thread = (Thethread) query.getSingleResult();
return thread;
} catch (NoResultException e) {
return null;
} catch (Exception e) {
throw new DAOException(e);
}
}
}
还有我的实体:
@Entity
@Table(name = "thethreads")
@NamedQuery(name = "Thethread.findAll", query = "SELECT t FROM Thethread t")
public class Thethread implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int idthread;
private String content;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "date_posted")
private Date datePosted;
private int downvotes;
@Column(name = "hot_score")
private int hotScore;
@Column(name = "is_pol")
private String isPol;
private String title;
private String type;
private int upvotes;
// bi-directional many-to-one association to Category
@OneToMany(mappedBy = "thethread", fetch = FetchType.EAGER)
private List<Category> categories;
// bi-directional many-to-one association to Post
@OneToMany(mappedBy = "thethread", fetch = FetchType.EAGER)
private List<Post> posts;
// bi-directional many-to-one association to Category
@ManyToOne
@JoinColumn(name = "categories_idcategory")
private Category category;
// bi-directional many-to-one association to Post
@ManyToOne
@JoinColumn(name = "last_post")
private Post post;
// bi-directional many-to-one association to User
@ManyToOne
@JoinColumn(name = "posted_by")
private User user;
// bi-directional many-to-one association to ThreadVote
@OneToMany(mappedBy = "thethread", fetch = FetchType.EAGER)
private List<ThreadVote> threadVotes;
public Thethread() {
}
}
最佳答案
command -XX:-UseConcMarkSweepGC? What does it do?
它设置垃圾收集器:ConcurrentMarkSweep (CMS)。Java 堆(对象在其生命周期中驻留的地方)主要分为两部分:年轻代和老年代。垃圾收集器负责在此分区上应用一些算法或策略来清理堆。CMS 不像默认 GC 那样在完全垃圾收集期间停止应用程序线程,而是使用一个或多个后台线程定期扫描老年代并丢弃未使用的对象。这可以帮助您减少开销情况,但问题并不会消失。
extract every row in an object ? Or does it ? Just wow.Is there a way around this ? I mean extracting a single row in 80 seconds is borderline slow.
答案首先取决于您的实体模型。例如,一个常见的问题是滥用 Eager fetch 类型,这会导致获取/检索大量不必要的对象,并为此执行多个查询语句。还取决于您的 JPA 实现和数据库如何解决任务,但我建议您开始检查实体模型。如果您发布 Thethread
实体,也许有人可以识别出可能存在的问题。
关于java - 82秒提取数据库中的一行,大型数据库出现java.lang.OutOfMemoryError : GC overhead limit exceeded,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767706/
好吧,我对我的页面发生的事情有点困惑。我在底部有页码, table 上摆满了 23 种不同的元素。 每个页面应一次显示 5 个项目。我显示的页面发送了一个带有 pagenumber = 不管怎样的 g
几周前我开始学习 Ada。我知道 limited 在某些情况下声明了一个有限类型,不允许复制对象 来自 Ada Reference Manual 2012 7.5 1/2 A limited type
我想按 DESC 选择日期并限制为最后 3 个,然后我需要基本上翻转最后 3 个结果,以便它们按 ASC 排序 任何帮助将不胜感激,我正在使用 postgresql 最佳答案 SELECT * FRO
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
SELECT * FROM mm_tfs WHERE product_slug LIKE '%football%' AND schoolid = '8' AND category_id ='2
我正在尝试访问按“日期”键排序的表中恒定数量的最新文档。请注意,不幸的是,日期是被实现的(不是由我......),使得该值设置为字符串,例如“2014-01-14”,或者有时“2014-01-14 2
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我目前正在使用具有限制 cpu、限制内存以及保留 cpu 和内存的 Docker Swarm。 完成测试后,我想删除这些配置。我找不到任何有关如何删除这些的文章。 是否有办法通过更新来删除这些设置而不
我必须对我的数据应用分页。我通过复杂的连接查询获取数据,没有任何子查询,只有简单的连接。 假设这个查询[这是一个非常简单的查询,我有一个比这个复杂的查询] SELECT states.state
我经常制作条形图,并将条形图的值额外包含为注释 (geom_text)。通常,我更喜欢这些值右对齐(与将标签放在条形顶部相反)。在绘制多面条形图时,我将这些值放在每个组中的最大值(我之前计算过)加上我
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
delivery-limit 和 x-delivery-limit 有什么区别? 当我将 x-delivery-limit 设置为 RabbitMQ 队列参数时,我可以看到它限制了我的消息重新排队尝试
我正在使用 PostgreSQL 9.3。这应该在具有 100,000 多行的任何表上重现。 EXPLAIN ANALYZE 显示使用 LIMIT 2 扫描了更多行,但我不明白为什么。 限制 1: E
我正在尝试找出是否可以在 PHP 中全局设置和取消设置 MySQL 结果的默认限制。 一些可能看起来像的伪代码: $pdo->prepare('SELECT * FROM example'); $pd
我有下面的代码片段表 在这里我必须对投票前 3 个值求和。 假设 product_id 3030 vote 列的总和为 8.1 和 3671 总和 是 5.2 在这里,我必须获得前 3 个 produ
我正在使用全文搜索来提取行。 我根据分数 (ORDER BY SCORE) 对行进行排序,然后在前 20 行 (LIMIT 20) 中,我想对结果集进行兰德 (RAND)。 因此,对于任何特定的搜索词
帮助创建搜索条件 SELECT * FROM mlt_adr_city WHERE name LIKE "Text%" AND region_id = 59 AND id <> 0 IF (name
MySQL 查询示例: SELECT message_id, message_text FROM messages LIMIT 0 , 30 我得到的这个提示是错误的: HIN
我注意到如果我将查询限制为 1 个而不是 5 个,速度会急剧下降。 SELECT he. * FROM homematic_events he WHERE he.homematic_devices_i
我需要从我的表中获取最后一个 ID,以便我可以在另一个函数中使用它我在我的存储库中创建了这个函数,但我没有工作,它显示了一个错误: [Syntax Error] line 0, col 60: Err
我是一名优秀的程序员,十分优秀!