机器配置:
P4 2.8 GHz 超线程,内存 1G
症状:
使用Eclipse时,点击某个按钮或图标甚至正在输入代码时,整个程序突然失去响应,菜单栏变白,除了关闭按钮,其他地方都没反应,在任务管理器中发现javaw.exe占用CPU50%(相当于单CPU100%),内存占用200多M,且CPU和内存占用数值均停止不动,机器风扇开始轰鸣,再等半天还是这个样子。点击“关闭”按钮出现“立即结束”对话框,只能很无奈地强行退出,有时一天碰到10多次,基本失去可用性。
寻找解决方案:
百度、google搜索,一般的解决方案是,调整启动参数-Xms -Xmx,增大堆内存,然而,在上述机器上设置为-Xms512m -Xmx512m,仍然没效,到失去响应的时候占用的内存依然是200多M。
看来这个问题需要自己解决了。用命令行方式启动eclipse:
java -Xms512m -Xmx512m -jar startup.jar
到失去响应的时候,发现命令行里打印出java.lang.OutOfMemoryError: PermGen space,打开workspace/.metadata/.log文件,发现很多这样的字符串,把这段话贴到搜索引擎上,发现很多这种问题,不过一般出现在Tomcat,Weblogic等Web应用程序上,没有人报告过会出现在Eclipse上。解决方案是增加启动参数:
-XX:MaxNewSize=256m -XX:MaxPermSize=256m
于是在eclipse.ini里把启动参数改为:
-Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 启动Eclipse,用了几天,都没再出现失去响应的症状。
关于MaxPermSize的文章:
CFMX JVM Tuning - The difference between MaxPermSize and Heap Size