转:https://blog.csdn.net/weixin_33795743/article/details/86024171
eclipse 如果启动慢,还可以接收。 可是如果是 保存的时候卡顿, 有时候会 卡顿 3秒-5 秒的,感觉到写代码特别的不顺畅,这怎么玩?
我的eclipse就是 保存的时候卡顿。 其实项目也不大,就是文件多,目录结构多而已。
另一个项目, 使用 eclipse ,不需要配置什么的,保存一点都不卡顿。
可以参考网上 网友的 解决方案
http://baijiahao.baidu.com/s?id=1563222228113375&wfr=spider&for=pc
可是我试过了, 最多可以提高 eclipse 启动的速度,编译速度,可是保存还是会 卡顿的。
很多方案都说只需要 在 eclipse.ini 的 配置 -Xms , -Xmx 即可。 我配置了 可是发现还是不行的。
-
-Xms512m
-
-Xmx2048m
解决方案
刚好看了一下 《深入理解JAVA虚拟机》里面有一个例子是 调优 eclipse卡的问题的。
加入了 -XX:MaxPermSize 发现解决了 这个问题, 如果不加入 发现保存就卡了。 书上说是 默认的 MaxPermSize 太小了或者是 该eclipse 不认识 MaxPermSize ,忽略掉了 加上去即可。
-
非堆内存分配
-
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关,
-
-server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。这个我没有实验。)
-
上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。
-
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。
-
说说为什么会内存益出:
-
(1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。
-
(2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。
-
这种错误常见在web服务器对JSP进行pre compile的时候。
-
设置永久代最大容量
-
-XX:MaxPermSize=768M
下面是我的 eclipse.ini 配置文件,大家尽量使用 新版本 jdk 和 eclipse了
-
-startup
-
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
-
--launcher.library
-
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.500.v20170531-1133
-
-product
-
org.eclipse.epp.package.jee.product
-
-showsplash
-
org.eclipse.epp.package.common
-
--launcher.defaultAction
-
openFile
-
--launcher.defaultAction
-
openFile
-
--launcher.appendVmargs
-
-vmargs
-
-Dosgi.requiredJavaVersion=1.8
-
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-
-XX:+UseG1GC
-
-XX:+UseStringDeduplication
-
-Dosgi.requiredJavaVersion=1.8
-
-Xms512m
-
-Xmx2048m
-
-XX:MaxPermSize=768M
或者 按照 上说的
-
-Xms2048m
-
-Xmx2048m
-
-XX:PermSize=1024M
-
-XX:MaxPermSize=1024M
-
-Xverify:none
-
由上述分析可以得出结论: Eclipse启动时,
-
Full GC大多数是由于老年代容量扩展而导致的,
-
由永久代空间扩展而导致的也有一部分。 为了避
-
免这些扩展所带来的性能浪费, 我们可以把-Xms
-
和-XX: PermSize参数值设置为-Xmx和-XX:
-
MaxPermSize参数值一样, 这样就强制虚拟机在
-
启动的时候就把老年代和永久代的容量固定下
-
来, 避免运行时自动扩展。
-
Eclipse使用者甚多, 它的
-
编译代码我们可以认为是可靠的, 不需要在加载
-
的时候再进行字节码验证, 因此通过参数-
-
Xverify: none禁止掉字节码验证过程也可作为一
-
项优化措施。 加