初入JVM调优之-eclipse3.4版本工程卡顿
最近eclipse经常崩溃,基本打开10分钟必然卡死。后面问了下同事要了下他的启动配置eclipse.ini文件,使用他的配置文件后再启动eclipse,发现工程明显的顺畅多了,也不会轻易卡死。
于是拿他的配置和我的配置对比了下:
我的:
他的:
从区别来看,
1.我这边的PermSize使用的参数和他不一样,值也更大
2.我的最小堆大小较大
3.我有个-clean参数
4.他指定了GC
刚好在学习jvm调优,这里就用jVisualVM查看了下进程状态。发现堆的大小虽然会呈现膨胀趋势,但是还是有比较多的空闲空间的,没有达到系统瓶颈。CPU占用比较高,但也不至于无响应。在查看PermGen的占用后却发现这个大小几乎是满负荷状态。然后看了下虚拟机参数,发现并没有我指定的1024M的最大值,而是只有67108864。
使用我的参数时
JVM参数:
永久态的内存使用情况:

使用他的参数时:
JVM参数:

永久态的内存使用情况:

我猜测应该就是这个原因导致。然后单独改了下这个参数,使用-XX:MaxPermSize=256M之后,eclipse的确不卡了。
这里现象是比较明显的,算是JVM调优实践入门。其他几个参数暂时没有明显的影响,这里不做分析。
至于这个参数“--launcher.XXMaxPermSize”如何解释,网上一般说和“-XX:MaxPermSize”参数作用一致,不过这里还是有一点区别。
《深入理解JVM虚拟机》书中刚好有描述,这个算是eclipse的配置,因为只有SUN的hotspot虚拟机才有永久态的概念,因此这个参数会在启动时判断虚拟机的标签是Sun公司的标签后会转化为-XX:MaxPermSize参数。
但是Sun在09年被收购后,标签就改了Oracle,我用的也是比较老的eclipse3.4,所以,eclipse没有认出标签,导致没有转化参数,使用了默认值64M。而我这边工程比较多,64根本不够用,导致了这个问题。

浙公网安备 33010602011771号