第一篇是具体讲解的可行的解决方式,第二篇是更多的侧重概念性的东西。
推荐一:https://blog.csdn.net/angle_birds/article/details/19609011
推荐二:https://www.cnblogs.com/Seachal/p/6202296.html
我的问题就是出现在eclipse启动后,运行程序或者写代码时,总是不经意间给你惊喜。那个卡顿没有征兆但很影响效率,为此特意了解了一翻堆栈和jvm的浅显概念。(这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善)总之还有些帮助的,最起码有目的去找解决问题的答案。下面贴出自己的eclipse.ini文件,我的是eclipse的版本是eclipse-jee-luna-SR2-win32-x86_64。机器是500G机械硬盘+8G内存条,i5处理器。
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
D:\java\jdk\jdk1.7.0_80\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms2048m
-Xmx2048m
-Xmn768m
-XX:NewSize=800m
-XX:MaxNewSize=800m
-XX:PermSize=1024m
-XX:MaxPermSize=1024m
-XX:+DisableExplicitGC
-XX:CompileThreshold=100
-Xverify:none
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=80
初始eclipse.ini文件可去官网去找,直接搜索eclipse.ini就可出现。
下面是列出几个参数参数的概念:
-Xms2048m 最大总堆内存,一般设置为物理内存的1/4
-Xmx2048m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了
初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了
-Xmn768m 年轻带堆内存,sun官方推荐为整个堆的3/8
年轻带堆内存,sun官方推荐为整个堆的3/8
<span style="color:#000000">-XX:PermSize=1024m 持久带堆的初始大小
</span>
<span style="color:#000000">-XX:MaxPermSize=1024m 持久带堆的最大大小,eclipse默认为256m。如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了
</span>
-XX:+DisableExplicitGC (1)关闭System.gc()
-XX:CompileThreshold=100(2)提高eclipse中某些代码的JIT编译,(方法调用多少次就会被编译成本地机器码)
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=80
(3)优化垃圾收集器,以减少垃圾收集造成应用无响应的时间
-Xverify:none关闭Java字节码验证,从而加快了类装入的速度