2010-09-23 79 views
1

请原谅这个新手问题。使用Hibernate时OutOfMemory错误的最常见原因是什么?

我的数据模型非常简单(两张表;一行200行,其他10,000行;两者之间的自然连接)。

我正在使用Hibernate尝试简单地读取/更新这些表。 这样做会一直抛出OutOfMemory错误(1GB分配给我的JVM)。

这似乎不太可能是由于自然记忆的需要,更可能是我省略了Hibernate中的一些基本步骤。

我已经用直接SQL替换了大部分实际的Hibernate对象访问(荒谬的,我知道)。但即使getCurrentSession()。createSQLQuery(...)也会导致OOM错误。

任何人都可以点我在正确的方向?

回答

2

使用Hibernate时OutOfMemory错误的最常见原因是什么?

OOM的一个常见原因是缺乏的会话级高速缓存的大小的控制的(通过调用sessionflushclear以规则的间隔,理想地,相同的间隔的JDBC批量大小)时处理大量实体。有关详情,请参阅Chapter 13. Batch processing

但是你的情况并不令人印象深刻。你到底在做什么?以及(甚至伪代码可能会有所帮助)?

+0

我根本不叫clear(),LOL。我会检查一下,谢谢。 – 2010-09-23 22:19:12

+0

@Aaron注意比大多数时候,你不需要像这样“微观管理”会话。这只在你开始处理大量实体时才有用(这就是为什么我想知道你的确切场景的一些细节)。但文档会给你一个想法。 – 2010-09-23 22:25:16

+0

代码太大,无法发布。我能否以某种方式直接寄给你? – 2010-09-24 01:17:44