环境普通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机制