2010-09-23 45 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

相關問題