2011-06-15 37 views
-2

我正在使用struts hibernate。無法在Hibernmate HQL列表中獲取超過50000條記錄

我有一張有超過50K記錄的表,但我無法在arraylist中讀取那些記錄,當我嘗試時,它總是激發我java heap space exception- Out of memory

這是什麼問題呢?

+0

它的時間爲你使用服務器端分頁 – anu 2011-06-28 06:54:26

回答

1

您已經有了答案:您需要更多的堆空間,更多的RAM或更少的記錄。

您可以嘗試增加可用於JVM的內存,但更好的問題是:爲什麼需要查詢50K記錄?

如果你正在用Java處理它們,也許一個在數據庫上進行計算的策略會是一個更好的主意。

您的客戶當然不需要一次查看50K記錄。谷歌可能會獲得數百萬次點擊,但他們優先考慮它們並一次向您發送前25名。你的應用應該模擬該策略。

0

如果您只需要一次處理一個實體(例如,將所有實體寫入導出文件),您可能需要查看如何在Hibernate中傳輸結果。

以下鏈接指向的文章談論這個話題的NHibernate的背景下,但解決的辦法應該對Hibernate的適用,以及:http://ayende.com/blog/4548/nhibernate-streaming-large-result-sets