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