环境普通pc,4G内存,i3cpu,jdk 1.6
使用工具: jvisualvm 和其插件visualgc
首先启动jvisualvm,eclipse按默认配置启动,在jvisualvm中选择eclipse的进程,查看统计信息
jvm的默认参数是 xmx=256M maxpermsize = 64M
看heap曲线图,最大值前期会有一个上升阶段,应该会稳定在一个值,而使用值则会有一些波动,没有明显提升
再看permgem,也就是永久带,也是上来就一个上升,然后使用值和最大值一般会相同,没有大项目的话会稳定在50上下M,一旦打开项目,就有可能会造成out of memory。
首先得到heap max 的稳定值 和 和 maxpermsize的稳定值
这就是在eclipse。ini要进行设置的参数
-Xms512m -Xmx512m ,设置成一样,省的jvm去不停的进行full gc。 用来设置整个heap的大小
-Xmn128m 用来设置年轻代的大小,一般不需要多大,这里面gc速度很快,可以被经常回收
-XX:PermSize=256m
-XX:MaxPermSize=256m 这个是设定永久代空间大小的,同样设为一样,防止去不停的触发full gc
跟年轻代的gc机制不同,fullgc是非常慢的,应该采用串行回收机制,回收过程整个jvm需要等待gc的完成,若通过gc还是没有足够的空间那么就会去申请新的空间,如果申请不到就报out of memory 错误了。
其实针对eclipse设置这些就够了,还有可以去指定java的路径也能提升一点。
如果是服务器则就要根据系统的整体情况,分别针对不同区域设置大小和gc机制