工作日志-20100720
来源:互联网 发布:魔兽世界有mac版吗 编辑:程序博客网 时间:2024/05/17 23:29
今天同事碰到一个OutOfMemory的问题,GUI启动后load几万条记录时抛出OutOfMemoryError。
开始怀疑是heap size设置不合理,在Eclipse.ini里面增加以下参数:
-vmargs
-XX:+UseParallelGC
-Xms512m
-Xmx1024m
-XX:NewRatio=40
问题依然存在,然后用jconsole来查看一下具体的jvm运行情况:
(小技巧:可以用jps来查看所有的java进程,然后用jstack pid来查看所有线程的运行状况)
在jconsole里发现如下现象:
PS Eden Space和PS Old Gen在查询的过程中急剧增大,迅速达到100%,造成OutOfMemoryError,仔细一看,才知道jvm里分配的Heap size最大才60多M,看来问题是Eclipse.ini里面的设置没有起作用。
从别处copy一个Eclipse.exe,重新运行,发现问题不存在,而且上面的设置也起作用了。
查了一下,发现原因是Eclipse RCP导出时有点问题:
需要在Launching的Launching Arguments里为win32特别设置一下,原来只是在All platforms里面设置了。
参考:
http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
http://www.slideshare.net/gengmao/inside-the-jvm-memory-management-and-troubleshooting