`
beckrabbit
  • 浏览: 129135 次
  • 性别: 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策略应该是比较适合的,以后有时间再试试看吧。
分享到:
评论
40 楼 lw1130 2010-09-08  
我没加上那句
用的是myeclipse8.0 改过后
-Xmx512m
-Xms512m
-Xmn256m
-XX:PermSize=96m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=128m
-XX:+UseParallelGC
启动速度 反应明显变快
哈哈 谢谢lz
39 楼 skzr.org 2010-09-07  
turionboy 写道
去掉这句:-XX:+DisableExplicitGC 都没有提示了。楼主帮忙看看是什么问题

前面我也同样的问题,不过我发现按确定后并不影响使用,一切正常
38 楼 D调的华丽 2010-09-07  
确实是有效果啊
37 楼 turionboy 2010-09-07  
去掉这句:-XX:+DisableExplicitGC 都没有提示了。楼主帮忙看看是什么问题
36 楼 turionboy 2010-09-07  
myeclipse8.6配置出现这情况:
MyEclipse has detected that less than 5% of the 12MB of PS Survivor Space (Heap memory) space remains.
It is strongly recommended that you exit and restart MyEclipse with new virtual machine
memory paramters to increase this memory.  Failure to do so can result in data loss.
Recommended memory arguments:
-vmargs
-Xmx512m
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=64m

我的参数是这样配置的:

-startup
Common/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
Common/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-install
D:/MyEclipse
-configuration
-vmargs
-Xms512m
-Xmx512m
-Xmn128m
-XX:MaxPermSize=256m
-XX:SurvivorRatio=8
-XX:+DisableExplicitGC
-XX:+UseParallelGC
-XX:ReservedCodeCacheSize=64m
35 楼 galaxystar 2010-09-07  
试下 tiered compilation 看?
http://weblogs.java.net/blog/forax/archive/2010/09/04/tiered-compilation
34 楼 char1st 2010-09-07  
http://www.iteye.com/topic/212967...............
另myEclipse好象有默认的GC参数.
33 楼 lqixv 2010-09-07  
用在 myEclipse( eclipse 版本3.3) 感觉快了不少。但用在 Eclipse 3.6 上,感觉并没有那么明显。不知为什么。
32 楼 kongxx 2010-09-07  
楼主思路挺好,对Java性能调优比较有用。
31 楼 beckrabbit 2010-09-07  
cryolite 写道
有没有 多核处理器下并行垃圾收集参数
-XX:+UseParallelGC

感觉调GC策略对于eclipse这种客户端程序似乎有点过了,一般是服务端比较适合,不过可以自己试试看效果,我是感觉不大出来
30 楼 beckrabbit 2010-09-07  
CosmosWon 写道
楼主,我加上-Xmn512m这句后。myeclipse就启动不了了,怎么回事?
顺便赞一个,启动的时候确实快了不少,感觉闪一下就启动完了~~

-Xmn是年轻代,一般不要超过堆大小(-Xms和-Xmx)的一半,你的512m明显太大了
29 楼 cryolite 2010-09-07  
有没有 多核处理器下并行垃圾收集参数
-XX:+UseParallelGC
28 楼 CosmosWon 2010-09-07  
楼主,我加上-Xmn512m这句后。myeclipse就启动不了了,怎么回事?
顺便赞一个,启动的时候确实快了不少,感觉闪一下就启动完了~~
27 楼 iammjj 2010-09-07  
确实很有效的配置~
按照楼主的方式调整以后gc条数极大减少
26 楼 evil850209 2010-09-07  
学习一下 感谢楼主分享
25 楼 hanxing0331 2010-09-07  
p8400 2G win7

我的参数:
-Xmn196m 
-Xms512m 
-Xmx512m 
-XX:PermSize=512m 
-XX:MaxPermSize=512m 
-XX:ReservedCodeCacheSize=128m

大概20多秒吧,

没有用 -XX:+DisableExplicitGC , 因为发现用了后,更慢,得100多秒

应该有需要 gc 一下的
24 楼 skzr.org 2010-09-07  
感谢beckrabbit的帮助

beckrabbit 写道

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)


1. 对于下面的没看懂,以为-Xmn没有起作用
10.108: [GC [PSYoungGen: 175588K->25061K(175616K)] 181276K->40682K(761344K), 0.1188080 secs] [Times: user=0.16 sys=0.02, real=0.12 secs] 


2. -XX:SurvivorRatio=8目前看,一切非常完美
3. 其实无所谓了,MyEclipse那个东西,估计有问题,我点确定后,eclipse一切正常

哈哈,beckrabbit的分享,让我的eclipse真正飞起来了

23 楼 linzy410 2010-09-07  
这个不得不支持一下lz,以前eclipse慢了,只会想到内存问题
22 楼 mathfox 2010-09-07  
还真没有想过是gc导致启动速度慢的。楼主有想法。
21 楼 beckrabbit 2010-09-07  
snake1987 写道
授人以鱼不如授人以渔
楼主,能介绍下学习调优,需要一些什么基础知识吗?能介绍一些相关的经典书籍吗?
谢谢了

这本书
http://book.douban.com/subject/4848587/

相关推荐

    设置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