lucene 建立索引的时候使用的hibernate分页查找然后分批建立索引,总是内存溢出

小杨阿哥哥 发布于 2011/06/22 11:38
阅读 1K+
收藏 0

lucene 建立索引的时候使用的hibernate分页查找然后分批建立索引,总是内存溢出。

数据量在150万左右。循环每次查询5000条i+=5000这样循环的。建索引后调用了

list.clear();
                    list = null;
                    System.gc();
                    System.runFinalization();

还是不能,机器内存4G。

TOMCAT 配置:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms256m -Xmx800m 

 

加载中
0
小杨阿哥哥
小杨阿哥哥
溢出的地方看样子是查询到后返回过程中,类型转换或者从resultset取的时候,偶尔会有clone什么的。
0
红薯
红薯
1. 继续加大虚拟机内存
2. 减少每次load数据的记录数,例如5000 -> 1000
0
小杨阿哥哥
小杨阿哥哥

到60W左右就溢出了

0
Andre.Z
Andre.Z

hibernate自身的数据缓存。gc在对象有强引用存在的时候,是不会释放的。虽然list清空了,但是hibernate数据缓存对于bean对象的引用还在吧。session.clear()之类清除缓存的语句试试。

btw:hibernate这玩意好多年不用了,没效率。

返回顶部
顶部