`
beckrabbit
  • 浏览: 129126 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

优化JVM参数提高eclipse运行速度

阅读更多
受此文启发: 随想配置:更快的启动eclipse

性能优化从身边做起。

首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse。优化的用例就是启动eclipse,open一个项目,eclipse会自动build这个项目,保证没有感觉到明显的卡,也就是没有full GC。

开始:

eclipse.ini里加入打印gc情况的参数:

-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log


这样eclipse在运行过程中会记录gc日志,显示详细的gc情况,并打印在gc.log中,通过分析这个日志寻找eclipse的性能瓶颈和优化方式。
我最初的参数只是在原版基础上调了堆大小
-Xms512m
-Xmx512m


将堆初始化和最大值设为一样,消除堆大小根据当前堆使用情况而变化带来的影响。
启动eclipse,发现gc.log里打出了很多full gc的日志
引用
4.226: [Full GC 4.226: [Tenured: 18470K->19304K(30544K), 0.1159544 secs] 25154K->19304K(44368K), [Perm : 24574K->24554K(24576K)], 0.1160431 secs] [Times: user=0.13 sys=0.00, real=0.13 secs]

在启动的6秒多时间里共出现了8次full gc,所以启动慢,觉得启动时候挺卡的。从日志里可以看出来 FullGC主要是在回收tenured区和Perm区,其中Perm一直都是快满的状态,Perm : 24574K->24554K(24576K),Perm大小在不断调整,所以需要固定Perm区的大小,保证够用,eclipse.ini里加入
-XX:PermSize=64m
-XX:MaxPermSize=64m


再启动:发现没有full gc了只有数量比较多的minor gc,挑启动开始到启动完成的第一条和最后一条日志
引用
0.209: [GC 0.209: [DefNew: 4416K->511K(4928K), 0.0034707 secs] 4416K->614K(15872K), 0.0035239 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
….
6.383: [GC 6.383: [DefNew: 18880K->1985K(21184K), 0.0055311 secs] 46992K->30098K(68040K), 0.0055694 secs]

这6秒中GC日志打了69次, 而内存回收率还是蛮高的 young区18880-1985=16895 jvm 46992-30098=16894 都快接近100%了,可以看出young区是由小到大在不断调整大小,所以不断GC,因此设一个初始值吧,据说设置heap的1/4比较好,那就是128M,所以eclipse.ini加入
-Xmn128m


再重启,发现GC日志就四条了,eclipse启动自然快了

引用
1.292: [GC 1.292: [DefNew: 104960K->10984K(118016K), 0.0334165 secs] 104960K->10984K(511232K), 0.0334603 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2.182: [GC 2.182: [DefNew: 115944K->1852K(118016K), 0.0221714 secs] 115944K->11466K(511232K), 0.0222142 secs] [Times: user=0.00 sys=0.02, real=0.02 secs]
3.987: [GC 3.987: [DefNew: 106779K->12531K(118016K), 0.0378228 secs] 116393K->22145K(511232K), 0.0378692 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
5.377: [GC 5.377: [DefNew: 117491K->9403K(118016K), 0.0513728 secs] 127105K->31364K(511232K), 0.0514133 secs]


但是,启动后open我的多个项目,这些项目互相依赖,eclipse自动build,感觉有点小卡,发现日志里多了4次full GC,所以就卡了…
引用
67.320: [Full GC (System) 67.320: [Tenured: 88847K->68809K(393216K), 0.2121213 secs] 117385K->68809K(511232K), [Perm : 41915K->41915K(65536K)], 0.2121747 secs] [Times: user=0.20 sys=0.00, real=0.20 secs]
103.759: [Full GC (System) 103.759: [Tenured: 81882K->66784K(393216K), 0.3287387 secs] 185350K->66784K(511232K), [Perm : 53464K->53414K(65536K)], 0.3287897 secs] [Times: user=0.33 sys=0.00, real=0.33 secs]


这个时候Tenured区和Perm都还没到很接近最大值,但是为什么还有full GC呢,开始以为是JVM悲观认为Tenured区剩余空间不足以应对下一次minor GC 所以进行了full GC调整Tenured空间,索性直接增加了堆最大值到-Xmx728m(工作电脑的内存是3.5G),但重启后full gc还是有4次,而且有几次minor GC用的时间超过了0.1秒,这是因为增加了堆大小,导致GC用时也增加了,不能接受。所以还是改回-Xmx512m。
再仔细观察日志,发现Full GC (System) 字样,这个意思是eclipse里调用了System.gc()手动触发了系统GC,好吧,哥已经给你分配足够空间了,你就省省吧,在eclipse.ini里加入:
-XX:+DisableExplicitGC


这样就差不多了,整个过程没有出现full gc,再编码2个小时,中间只出现了一次full gc,在open build某50W行+的代码的时候,eclipse还是卡了…
最后又稍微调了一下各代的大小,得到目前的参数:
-Xms512m
-Xmx512m
-XX:PermSize=96m
-XX:MaxPermSize=96m
-Xmn168m
-XX:+DisableExplicitGC

另外没有去调GC策略,主要是觉得eclipse是客户端程序,默认的client单线程的GC策略应该是比较适合的,以后有时间再试试看吧。
分享到:
评论
20 楼 beckrabbit 2010-09-07  
skzr.org 写道
感谢楼主分享

我现在的配置 ubuntu10.04 64bit, Intel core2 P8400, 4G mem,eclipse galileo
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xmn196m
-Xms512m
-Xmx1536m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=256m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log

配置后,启动速度差不多,不过里面点东西的时候,eclipse响应的速度超快
好像Xmn参数不起作用,gc.log输出
8.078: [GC [PSYoungGen: 150528K->25058K(175616K)] 150528K->30747K(499200K), 0.1307120 secs] [Times: user=0.09 sys=0.03, real=0.13 secs] 
13.100: [GC [PSYoungGen: 175586K->25057K(175616K)] 181275K->43679K(499200K), 0.2308440 secs] [Times: user=0.17 sys=0.05, real=0.23 secs] 
138.857: [GC [PSYoungGen: 175585K->25076K(175616K)] 194207K->65302K(499200K), 0.1117250 secs] [Times: user=0.18 sys=0.01, real=0.12 secs] 


有一个疑问,如果楼主方便可以帮助我分析分析?感谢您
如果加上参数:-XX:+DisableExplicitGC,MyEclipse会弹出来一个东西:就是那个内存不够的,需要配置的东西
Heap
 PSYoungGen      total 175616K, used 95224K [0x00007f0eb4ba0000, 0x00007f0ec0fa0000, 0x00007f0ec0fa0000)
  eden space 150528K, 46% used [0x00007f0eb4ba0000,0x00007f0eb9021078,0x00007f0ebdea0000)
  from space 25088K, 99% used [0x00007f0ebdea0000,0x00007f0ebf71d0f0,0x00007f0ebf720000)
  to   space 25088K, 0% used [0x00007f0ebf720000,0x00007f0ebf720000,0x00007f0ec0fa0000)
 PSOldGen        total 323584K, used 40226K [0x00007f0e60fa0000, 0x00007f0e74ba0000, 0x00007f0eb4ba0000)
  object space 323584K, 12% used [0x00007f0e60fa0000,0x00007f0e636e8a08,0x00007f0e74ba0000)
 PSPermGen       total 262144K, used 65602K [0x00007f0e50fa0000, 0x00007f0e60fa0000, 0x00007f0e60fa0000)
  object space 262144K, 25% used [0x00007f0e50fa0000,0x00007f0e54fb0bd8,0x00007f0e60fa0000)

目前我都是去掉此参数-XX:+DisableExplicitGC,后台的GC输出都是下面的东西:
407.541: [Full GC (System) [PSYoungGen: 64K->0K(149248K)] [PSOldGen: 85741K->85742K(323584K)] 85805K->85742K(472832K) [PSPermGen: 96914K->96914K(262144K)], 0.5234640 secs] [Times: user=0.51 sys=0.00, real=0.53 secs]


1.-Xmn起作用了啊 每个GC日志都是(175616K) 这就是你设定好的 而不是jvm动态调整的
2.大概看一下貌似是from space 25088K, 99% used 的问题 你可以调大-Xmn 这样Survivor区也会跟着大,或者是调小-XX:SurvivorRatio=X 的值,这样Survivor区也会大,具体怎样做好要看具体情况
3.去掉-XX:+DisableExplicitGC 就是允许执行System.gc(),也就是允许程序来控制执行full gc,也就会打出 Full GC (System)
19 楼 bestxiaok 2010-09-07  
根据楼主的改了该  速度果然提高很多啊!
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx512m
-Xmn168m
-XX:+DisableExplicitGC
18 楼 i2534 2010-09-07  
感谢楼主了.我也对自己的eclipse调整了下.我还装了VE插件,巴别插件.
只调整
-Xms512m
-Xmx512m
启动速度加快,但是打开项目Full GC了4次,打开文件Full GC了两次.还没试用VE编辑文件.

然后加上
-XX:PermSize=96m
-XX:MaxPermSize=96m
-Xmn168m
-XX:+DisableExplicitGC
启动速度加快,没有出现Full GC,用VE编辑文件也没有Full GC.
感谢楼主分享.
17 楼 snake1987 2010-09-07  
授人以鱼不如授人以渔
楼主,能介绍下学习调优,需要一些什么基础知识吗?能介绍一些相关的经典书籍吗?
谢谢了
16 楼 crazier9527 2010-09-07  
很强大,多谢分享
15 楼 elvishehai 2010-09-07  
不错哦! 很强大,
14 楼 yeswoyaofei 2010-09-07  
很好 很强大
13 楼 蔡华江 2010-09-07  
确实很棒!
12 楼 skzr.org 2010-09-07  
感谢楼主分享

我现在的配置 ubuntu10.04 64bit, Intel core2 P8400, 4G mem,eclipse galileo
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xmn196m
-Xms512m
-Xmx1536m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=256m
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log

配置后,启动速度差不多,不过里面点东西的时候,eclipse响应的速度超快
好像Xmn参数不起作用,gc.log输出
8.078: [GC [PSYoungGen: 150528K->25058K(175616K)] 150528K->30747K(499200K), 0.1307120 secs] [Times: user=0.09 sys=0.03, real=0.13 secs] 
13.100: [GC [PSYoungGen: 175586K->25057K(175616K)] 181275K->43679K(499200K), 0.2308440 secs] [Times: user=0.17 sys=0.05, real=0.23 secs] 
138.857: [GC [PSYoungGen: 175585K->25076K(175616K)] 194207K->65302K(499200K), 0.1117250 secs] [Times: user=0.18 sys=0.01, real=0.12 secs] 


有一个疑问,如果楼主方便可以帮助我分析分析?感谢您
如果加上参数:-XX:+DisableExplicitGC,MyEclipse会弹出来一个东西:就是那个内存不够的,需要配置的东西
Heap
 PSYoungGen      total 175616K, used 95224K [0x00007f0eb4ba0000, 0x00007f0ec0fa0000, 0x00007f0ec0fa0000)
  eden space 150528K, 46% used [0x00007f0eb4ba0000,0x00007f0eb9021078,0x00007f0ebdea0000)
  from space 25088K, 99% used [0x00007f0ebdea0000,0x00007f0ebf71d0f0,0x00007f0ebf720000)
  to   space 25088K, 0% used [0x00007f0ebf720000,0x00007f0ebf720000,0x00007f0ec0fa0000)
 PSOldGen        total 323584K, used 40226K [0x00007f0e60fa0000, 0x00007f0e74ba0000, 0x00007f0eb4ba0000)
  object space 323584K, 12% used [0x00007f0e60fa0000,0x00007f0e636e8a08,0x00007f0e74ba0000)
 PSPermGen       total 262144K, used 65602K [0x00007f0e50fa0000, 0x00007f0e60fa0000, 0x00007f0e60fa0000)
  object space 262144K, 25% used [0x00007f0e50fa0000,0x00007f0e54fb0bd8,0x00007f0e60fa0000)

目前我都是去掉此参数-XX:+DisableExplicitGC,后台的GC输出都是下面的东西:
407.541: [Full GC (System) [PSYoungGen: 64K->0K(149248K)] [PSOldGen: 85741K->85742K(323584K)] 85805K->85742K(472832K) [PSPermGen: 96914K->96914K(262144K)], 0.5234640 secs] [Times: user=0.51 sys=0.00, real=0.53 secs]
11 楼 iceofst 2010-09-07  
很不错的分析,学习了.看来有空还是要研究下jvm.
10 楼 janrn 2010-09-07  
LZ真是个人才, 很用心的人, 向你学习
9 楼 sunjun 2010-09-07  
我的参数,确实快了些:
-framework
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512M
-Xmx512M
-Xmn128M
-XX:PermSize=128M
-XX:MaxPermSize=128M
-XX:+DisableExplicitGC
#-Djava.net.preferIPv4Stack=true

楼主确实很强!
8 楼 shuiguozheng 2010-09-07  
很实用啊,呵呵
7 楼 zhangyou1010 2010-09-07  
-vmargs
-Xmx512m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=64m


我的myeclipse8.5,报内存设置太低。估计-XX:MaxPermSize=256m 这个得改为512m.
6 楼 failure5152 2010-09-06  
用了楼主的参数,eclipse确实启动快了...
5 楼 beckrabbit 2010-09-06  
<div class="quote_title">finux 写道</div><div class="quote_div"><p>谢谢LZ~<br>我的参数:<br></p>
<pre name="code" class="java">-Xms256m
-Xmx256m
-Xmn128m
-XX:PermSize=64m
-XX:MaxPermSize=256m</pre>
 <br><br>启动Eclipse.app由原来的60多次GC下降到6次,呵呵。。。<br><br>有一个问题,下面这个参数是什么意思,不太明白?<br><pre name="code" class="java">-XX:+DisableExplicitGC</pre>
 
<p> </p></div><br/>无视代码中的system.gc()
4 楼 finux 2010-09-06  
<p>谢谢LZ~<br>我的参数:<br></p>
<pre name="code" class="java">-Xms256m
-Xmx256m
-Xmn128m
-XX:PermSize=64m
-XX:MaxPermSize=256m</pre>
 <br><br>启动Eclipse.app由原来的60多次GC下降到6次,呵呵。。。<br><br>有一个问题,下面这个参数是什么意思,不太明白?<br><pre name="code" class="java">-XX:+DisableExplicitGC</pre>
 
<p> </p>
3 楼 skzr.org 2010-09-06  
我的参数
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms384m
-Xmx1536m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=128m

看了lz的经历,感觉很受用
马上按照lz的方法进行调优
Thanks for you
2 楼 beckrabbit 2010-09-06  
rocketball 写道
在压力测试的情况下,一般也不会用Eclipse了吧

和压力测试没有关系,只是拿eclipse来做JVM调优的练手,调优的过程、思路和服务端程序是一样的
1 楼 rocketball 2010-09-06  
在压力测试的情况下,一般也不会用Eclipse了吧

相关推荐

    设置Eclipse的JVM参数

    其中,设置合适的JVM(Java虚拟机)参数是优化Eclipse运行性能的重要手段之一。本文将详细介绍如何设置Eclipse的JVM参数,并解释这些参数的意义及其对Eclipse性能的影响。 #### 二、Eclipse与JVM的关系 Eclipse...

    中间件安装调优指导手册

    Java的安装;...优化JVM参数提高eclipse运行速度;Tomcat JVM优化一例;linux下Nginx+tomcat整合的安装与配置;Memcached安装;memcache集群配置;JMS安装;JMS集群配置;Nginx反向代理;防火墙配置

    Eclipse启动运行速度调优

    本文将深入探讨如何通过调整JVM参数来优化Eclipse的启动和运行速度,旨在为开发者提供实用的性能调优策略。 #### 二、JVM参数详解 ##### 1. **-Xverify:none** 关闭Java字节码验证,这一步骤可以显著加速类的加载...

    Eclipse 启动运行速度调优

    本文将详细探讨如何通过调整JVM参数来优化Eclipse的性能,特别是针对启动时间和运行速度。 #### 二、JVM参数概述 Java虚拟机(JVM)提供了一系列的参数选项来帮助开发者调整内存分配和垃圾回收等行为,这对于提高...

    Eclipse 运行命令行参数大全

    本文将详细介绍Eclipse运行时可以使用的命令行参数,帮助用户更好地理解和掌握如何优化和定制自己的开发环境。 #### 基本概念 在启动Eclipse时,可以通过命令行传递一系列参数来定制其行为和性能。这些参数主要...

    eclipse性能优化 <深度理解jvm>读书笔记

    1. **启动速度优化**:可以通过减少工作空间中的项目数量,禁用不必要的插件,以及使用eclipse -clean启动来提高Eclipse的启动速度。另外,保持Eclipse的更新也是提高性能的关键,定期检查并安装最新的版本和补丁。 ...

    Eclipse设置、调优、使用详解

    通过在Eclipse配置文件(eclipse.ini)中指定JVM参数“-vm”,我们可以指定Eclipse运行所使用的JRE路径,从而避免在启动时搜索JRE,加快启动速度。 其次,Eclipse在启动时默认会激活一系列的插件,这些插件可能并...

    eclipse配置优化

    为了提高Eclipse的启动速度和运行效率,我们可以对Eclipse的配置进行优化。以下是一些关键的优化策略,主要集中在JVM(Java虚拟机)参数的调整和Eclipse配置文件的修改上。 1. **JVM 参数优化**: - `-server`:...

    eclipse.ini内存设置各参数含义

    在深入探讨《eclipse.ini内存设置各参数含义》这一主题之前,我们首先应当明确eclipse.ini文件在Eclipse集成开发环境中的重要性及其如何通过调整内存配置参数来优化Eclipse的运行性能。以下是对该主题的详细解析: ...

    Eclipse 优化

    通过对 Eclipse 的 JVM 参数、启动项以及一些高级配置的优化,我们可以显著提高 Eclipse 的启动速度和运行效率。当然,具体的优化策略还需要根据个人的工作环境和需求进行调整。希望上述内容能帮助开发者们更好地...

    可以优化eclipse卡顿

    对于8GB内存的系统,保持默认配置即可,因为8GB通常足够Eclipse运行。 其次,禁用不必要的启动项可以加快Eclipse的启动速度。许多启动项在日常开发中可能并未使用,所以取消这些启动项的勾选可以节省内存,提高启动...

    详细品味eclipse性能优化

    9. **硬件升级**:如果以上优化措施仍无法满足需求,考虑升级硬件,如增加RAM或使用固态硬盘,可以显著提升Eclipse的运行速度。 10. **工作流优化**:良好的编程习惯也能间接提高Eclipse的性能,比如合理划分模块,...

    java虚拟机调优大师--关于JVM项目程序调优代表性的实例,eclipse优化

    实战:Eclipse运行速度调优。案例分析。高性能硬件上的程序部署策略

    Eclipse 快捷键大全和启动参数大全.txt

    6. **系统资源监控**: 当遇到性能瓶颈时,合理调整JVM参数,定期清理和优化工作空间,可以有效提升Eclipse的响应速度和稳定性。 综上所述,熟练掌握Eclipse的快捷键和启动参数,不仅能够显著提高编码效率,还能针对...

    eclipse启动加速插件

    通常,你可以通过修改eclipse.ini文件来设置这些参数,但某些插件提供了更直观的界面,使用户在Eclipse运行时就能进行调整。 "超爽,多个eclipse之间,eclipse与其它程序之间快速切换,没有一点卡的现象"这部分描述...

    MyEclipse启动和运行速度优化

    ### MyEclipse启动和运行速度优化 在日常开发过程中,我们经常会遇到MyEclipse启动慢、运行卡顿等问题,这不仅影响工作效率,还可能导致代码编辑和调试效率降低。本文将针对这些问题提供一系列优化建议,帮助提升...

    Eclipse + Tomcat 内存溢出参数设置

    2. **在Eclipse中配置JRE**:打开Eclipse,依次点击`Preferences -&gt; Java -&gt; Installed JREs -&gt; JDK 1.6.0`,在`Default VM Arguments`中输入`-Xms256m -Xmx1024m`,指定Eclipse运行时的初始堆内存为256MB,最大堆...

    showtime的eclipse插件

    3. **JVM 调优**:Java虚拟机的性能优化是软件开发中的重要环节,通过调整JVM参数,可以优化内存分配、减少垃圾回收频率,提高程序响应速度和系统资源利用率。Showtime插件让这一过程更为直观和便捷。 4. **与...

    JVM 调优之 Eclipse 启动调优实战

    在Java开发中,Eclipse作为常用的集成开发环境,其启动速度和运行效率对开发者的工作效率有着直接影响。本文将分享一个基于旧版环境(Dell E5410,Intel i3 CPU M 370,2GB内存,32位Windows XP,Java HotSpot ...

Global site tag (gtag.js) - Google Analytics