zoukankan      html  css  js  c++  java
  • [转]迄今为止最优的Eclipse运行性能调优 ,含eclipse.ini

    最近,Eclipse(Eclipse-JEE3.5)运行十分缓慢(可能插件安装过多),因此,得到了个机会调优一下,以便提高工作效率

    下图是未经任何调整eclipse的gc情况(使用jvisualvm命令,安装visual gc插件)

    在终端输入:jvisualvm运行后,工具->插件->visual gc,安装。

    启动eclipse后,在终端运行: ps -ef | grep eclipse,然后在jvisualvm的应用程序一栏选择eclipse pid的程序双击,即可到visual gc上查看图表。

    -Xms1024m
    -Xmx1024m

    对应的为图中的 Old 区;

    -XX:NewSize=768m
    -XX:MaxNewSize=768m

    对应的为图中的 Eden 区;

    -XX:PermSize=200m
    -XX:MaxPermSize=200m

    对应的为图中的 Perm区;

    从图中可以看出,仅启动过程就有38次young gc,11次full gc
    为了查看gc细节,在eclipse.ini中加入如下参数:
    -verbose:gc
    -XX:+PrintGCDetails
    -XX:+PrintGCDateStamps
    -Xloggc:D:/soft/eclipse-jee/gc.log
    gc的内容如下:

    从gc日志中可以看出:
    (1)young区开始为4928K,持续的不够,因此造成不断的young gc
    (2)full gc时,old区的空间增大扩容,因此old区空间也不够
    为了防止这种情况发生,加入以下参数:
    -Xms768m
    -Xmx768m
    -XX:NewSize=512m
    -XX:MaxNewSize=512m
    此次调整后结果如下图:

    从图中可以看出,young gc没有了,但为啥还11次full gc呢?
    以下是此次gc的日志:

    从gc.log中,可以看出,是因为perm区的没有空间了,才导致的full gc,于是将perm区增大并固定大小
    加入以下参数:
    -XX:PermSize=96m
    -XX:MaxPermSize=96m
    此次调整后结果如下:

    可以看出,没有full gc了,而且young gc只有一次,有了一定的效果了
    启动时gc的问题解决了,现在来看其他问题:

    从图中可以看出,如果classloader加载class的时间能快些,应该也会节省些时间
    加入以下参数:
    -Xverify:none(关闭Java字节码验证,从而加快了类装入的速度)

    将上两图比较
    第一个:平均每个类的载入时间为,54.615/10950 = 0.0049876712328767s
    第二个:平均每个类的载入时间为,34.498/9484 = 0.0036374947279629s
    可以看出,多少是有一些性能上的提高的
    考虑到eclipse长时间运行,其他可能调节的有以下几点:
    (1)关闭System.gc()
    (2)提高eclipse中某些代码的JIT编译
    (3)优化垃圾收集器,以减少垃圾收集造成应用无响应的时间
    对于(1),加入以下参数:
    -XX:+DisableExplicitGC
    对于(2),会影响启动速度,但由于eclipse是长时间运行,因此此优化是必要的:
    -XX:CompileThreshold=100(方法调用多少次就会被编译成本地机器码)

    可以看出,编译方法的数量和时间明显增加
    对于(3),换用CMS收集器应该比串行收集器要好,加入以下参数:
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80
    至此,调优结束

    总结一下加入的参数如下:
    -verbose:gc
    -XX:+PrintGCDetails
    -XX:+PrintGCDateStamps
    -Xloggc:D:/soft/eclipse-jee-galileo-win32/eclipse/gc.log
    -Xms512m
    -Xmx512m
    -XX:NewSize=256m
    -XX:MaxNewSize=256m
    -XX:PermSize=96m
    -XX:MaxPermSize=96m
    -XX:+DisableExplicitGC
    -XX:CompileThreshold=100
    -Xverify:none
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80

    http://blog.csdn.net/gtuu0123/article/details/6720253

    参考如上内容用的eclipse.ini:

    1、小内存,运行情况不错

    -clean
    -startup
    plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835
    -product
    org.eclipse.epp.package.cpp.product
    --launcher.defaultAction
    openFile
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m
    --launcher.defaultAction
    openFile
    --launcher.appendVmargs
    -vmargs
    -Dosgi.requiredJavaVersion=1.6
    -Xms512m
    -Xmx512m
    -XX:NewSize=256m
    -XX:MaxNewSize=256m
    -XX:PermSize=96m
    -XX:MaxPermSize=96m
    -XX:+DisableExplicitGC
    -XX:CompileThreshold=100
    -Xverify:none
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80

    2、大内存

    -clean
    -startup
    plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835
    -product
    org.eclipse.epp.package.cpp.product
    --launcher.defaultAction
    openFile
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m
    --launcher.defaultAction
    openFile
    --launcher.appendVmargs
    -vmargs
    -Dosgi.requiredJavaVersion=1.6
    -Xms1600m
    -Xmx1600m
    -XX:NewSize=800m
    -XX:MaxNewSize=800m
    -XX:PermSize=256m
    -XX:MaxPermSize=256m
    -XX:+DisableExplicitGC
    -XX:CompileThreshold=100
    -Xverify:none
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80

    3、大内存,自己弄的,可能优化的不合理

    -clean
    -startup
    plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835
    -product
    org.eclipse.epp.package.cpp.product
    --launcher.defaultAction
    openFile
    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize
    256m
    --launcher.defaultAction
    openFile
    --launcher.appendVmargs
    -vmargs
    -Dosgi.requiredJavaVersion=1.6
    -XX:MaxPermSize=256m
    -Xms40m
    -Xmx2048m
    -Xss1024k
    -Xss1024k
    -XX:+DisableExplicitGC
    -XX:CompileThreshold=100
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80
    -Xverify:none

  • 相关阅读:
    Python之while循环
    Python之分支语句
    Python之变量
    Python开挂的吧!
    xshell 连接 ubuntu 16.04报错
    js中的script标签
    javascript中的事件学习总结
    【JAVAWEB学习笔记】04_JavaScript
    【JAVAWEB学习笔记】03_JavaScript
    【JAVAWEB学习笔记】02_HTML&CSS
  • 原文地址:https://www.cnblogs.com/Alandre/p/3856273.html
Copyright © 2011-2022 走看看