ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【JVM 3】Eclipse运行速度调优

2021-11-20 16:58:37  阅读:217  来源: 互联网

标签:launcher eclipse Eclipse 编译 调优 GC 内存 JVM 加载


openFile

–launcher.defaultAction

openFile

–launcher.appendVmargs

-vmargs

-Dosgi.requiredJavaVersion=1.8

-Dosgi.instance.area.default=@user.home/eclipse-workspace

-XX:+UseG1GC

-XX:+UseStringDeduplication

–add-modules=ALL-SYSTEM

-Dosgi.requiredJavaVersion=1.8

-Xms256m

-Xmx1024m

–add-modules=ALL-SYSTEM

-Dcom.sun.management.jmxremote

初始设置指定了1.8版本的JDK,采用G1收集器,设置最大堆为1024M以及开启了JMX管理。

二、调优前的运行状况

==============

写了个eclipse启动计时插件(将Jar包放到Eclipse的plugins目录下,启动Eclipse,可以显示Eclipse的启动时间),记录优化前的启动时间,为了保证测试结果的准确性,应该多次启动最后一次结果:

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

根据Visual GC和插件得到以上的信息截图,我们可以总结出原始配置下的启动状况:

1.整个启动耗时35秒。

2.垃圾收集总耗时1.126秒,其中Full GC 0 次,Minor GC 25 次,耗时1.126秒。

3.加载类19991个,共耗时38.131秒。

4.JIT编译时间为46.103秒(随着时间流逝,编译次数和时间不停增长)。

5.虚拟机1024MB的堆内存被分配为,新生代当前分配63M,老年代187M。

总的来说启动时间不算短,所以还是有可以调优的空间。

三、堆内存与Metaspace优化

=====================

打开VisualVM,直接查看内存曲线变化

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

从上图看,不管是Java堆的曲线变化还是Mwtaspace曲线变化,运作都完全正常。

暂时找不到可优化的条件。

四、编译时间和类加载时间的优化

===============

看上图调优前的运行状况,编译时间和类加载时间应该是优化的重头戏了。

è¿éåå¾çæè¿°

先看类加载时间。由于类加载需要进行字节码验证耗时,考虑到eclipse使用者众多,它的编译代码我们认为是可靠的,不需要加载的时候再进行字节码验证,因此通过参数**-Xverify:none**禁止掉字节码验证过程也可以认为是优化手段。

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

在取消掉字节码验证之后,确实可以看到Ecipse启动速度有了一定的提升,但仍还不够。

在类加载个数上,可以看出初始状况加载了19991个类,可以在eclipse中关掉不需要的启动项。

![è¿éåå¾çæè¿°](https://www.icode9.com/i/?i=20180713152517702?watermark/2/text/aHR0c

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 开源分享

HM6Ly9ibG9nLmNzZG4ubmV0L2Rhc2h1YWlnZWdlNjQy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

è¿éåå¾çæè¿°

但是编译时间上目前没找到太好的办法~~~不知道怎么解决,希望有高人指点

五、调整内存,减少垃圾收集次数

===================

上面说到了编译时间 类加载时间,那么剩下的就是GC时间了。

可以看出,此次Full GC被触发了 4 次,Minor GC 8 次。

è¿éåå¾çæè¿°

此次GC次数并不算多,但是从监视器中可以看出,堆内存的使用不应该发生Full GC才对。

为了能够更好的看到eclipse启动期间所做的GC收集操作,我们加入配置**-Xloggc:gc.log**。

è¿éåå¾çæè¿°

可以看出每次的Full GC 都是有Metadata GC Threshold造成的,也就是元空间引发的full GC。

从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。每次Full GC,Metaspace都在调整阈值。因此,再加入-XX:MetaspaceSize=256M

但是仍可以看到每次发生的Minor GC都是有新生代内存不够所导致,因此,仍需提升配置

**-Xms2048m

-Xmx2048m

-Xmn512m**

本次调优完毕,只有3次Minor GC 耗时600毫秒。

但是启动时间仍需要27秒。。。。。。。。。灰常尴尬。

目测时间还是花费在了类加载与编译上。需要更加进一步的优化。最后,贴出本次调优后的最终eclipse.ini配置

-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.551.v20171108-1834

-product

org.eclipse.epp.package.jee.product

-showsplash

org.eclipse.epp.package.common

–launcher.defaultAction

openFile

–launcher.defaultAction

openFile

–launcher.appendVmargs

标签:launcher,eclipse,Eclipse,编译,调优,GC,内存,JVM,加载
来源: https://blog.csdn.net/m0_64205564/article/details/121441984

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有