问题描述
|
我正在使用Struts休眠模式。
我有一个表有超过5万条记录,但是我无法在arraylist中获取该记录,当我尝试尝试时,它总是会激发我
java heap space exception- Out of memory
。
这是什么问题?
解决方法
您已经有了答案:您将需要更多的堆空间,更多的RAM或更少的记录。
您可以尝试增加可用于JVM的内存,但更好的问题是:为什么需要查询50K记录?
如果您使用Java处理它们,那么也许最好是对数据库进行计算的策略。
您的客户当然不需要一次查看5万条记录。 Google可能会获得数百万个匹配,但它们会对其进行优先排序,并一次向您发送前25个匹配。您的应用应效仿该策略。
, 如果您只需要一次处理一个实体(例如,将所有实体写入导出文件),则可能需要查看如何在Hibernate中流式传输结果。
以下链接指向在NHibernate上下文中讨论此主题的文章,但该解决方案也应适用于Hibernate:http://ayende.com/blog/4548/nhibernate-streaming-large-result-sets