解决eclipse 保存卡顿的问题

时间:2024-03-12 14:27:58

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区域,它和存放InstanceHeap区域不同。
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禁止掉字节码验证过程也可作为一
项优化措施。 加

                                                <div class="ad-wrap" style="margin-top: 12px;">
                                                    <div id="blog-title-ad" data-traceid="blog_ali" data-tracepid="blogdown" style="">

                                    </div>
                                        </div>