在网站建设中,经常用到eclipse,每次启动都是很费时间的,那么如何对它进行优化呢?
版本:Eclipse3.6
参数配置文件:eclipse.ini
结果:修改后启动速度直观上有比较明显的加快
注意:重点是后面红字部分的设置
首先建立评估体系,比如,我们需要建立一个网站http://www.hualai.net.cn,首先将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策略应该是比较适合的,以后有时间再试试看吧。
分享到:
相关推荐
### Eclipse启动参数设置详解 在开发环境中,Eclipse是一款非常受欢迎的集成开发环境(IDE),广泛应用于Java开发中。为了确保Eclipse能够高效稳定地运行,合理设置其启动参数至关重要。本文将详细介绍Eclipse启动...
这些参数在 Eclipse 的启动过程中扮演着重要的角色。 JVM 参数 * `-vmargs`:用于设置 JVM 的参数,例如堆栈大小、垃圾回收器等。 * `-vm`:指定 JVM 的类型,例如 Java HotSpot(TM) 64-Bit Server VM。 Eclipse ...
在MyEclipse或Eclipse中,存在许多模块用于支持不同的功能,但并非所有模块都是每次启动时都需要的。通过`Windows - Preferences - General - Startup and Shutdown`路径,可以访问到启动和关闭时加载的模块列表。...
在日常开发过程中,Eclipse的启动速度可能对开发者的工作效率产生影响,尤其是当项目规模较大或者安装了众多插件时,启动时间可能会变得较长。"eclipse启动时间插件"就是针对这一问题设计的解决方案。 这个插件的...
1. 使用Eclipse的启动快捷方式:创建一个指向Eclipse可执行文件的快捷方式,并添加`-clean`参数,如`eclipse.exe -clean`,这将强制Eclipse进行一次全面清理和重新加载,有助于解决某些启动问题。 2. 使用Eclipse...
本文将深入探讨如何通过调整JVM参数来优化Eclipse的启动和运行速度,旨在为开发者提供实用的性能调优策略。 #### 二、JVM参数详解 ##### 1. **-Xverify:none** 关闭Java字节码验证,这一步骤可以显著加速类的加载...
同时,了解Eclipse的启动参数也是优化工作环境和提升开发体验的关键。 **Eclipse快捷键大全** 1. **编辑操作** - `Ctrl + C` / `Ctrl + V`: 复制/粘贴 - `Ctrl + X`: 剪切 - `Ctrl + Z`: 撤销 - `Ctrl + Y`: ...
在Eclipse中,用户可以通过将插件文件放入"plugins"目录来安装它们。 描述中提到的"插件放到plugin之后,在eclipse打开后会看到设置占用内存空间大小的标签",这可能是指一种能够调整Eclipse内存配置的插件。...
通过这些参数,开发者可以根据具体需求优化Eclipse的启动和运行过程,从而提升开发体验和效率。 ### 使用技巧与注意事项 1. **自定义快捷键**: 用户可以通过`Window > Preferences > General > Keys`来查看和修改...
- **禁用不必要的启动插件**:在`eclipse.ini`文件中,通过`-no-startup`参数可以指定不启动特定插件。 - **增加初始内存大小**:增加`-Xms`和`-Xmx`参数值,以确保Eclipse启动时有足够的内存,如`-Xms512m -Xmx...
3. **验证设置**:通过Eclipse的帮助菜单中的“关于Eclipse SDK”窗口,点击“配置详情”按钮,可以查看当前生效的内存设置。 #### 实践中的注意事项 - 在不同机器上应用相同的内存参数可能遇到兼容性问题,这与各...
通过合理的配置JVM参数,尤其是调整PermGen Space的大小,可以有效解决Eclipse中的内存不足问题。此外,还应注意优化项目的第三方库管理,减少不必要的类加载,从而进一步提升Eclipse的稳定性和性能。 总之,正确地...
此插件可以帮你统计你的eclipse启动耗时 。 eclipse版本:4.x 使用方法:将此插件复制到eclipse目录下的plugin目录,重启eclipse
- 关闭并重新启动 Eclipse,此时 Eclipse 将使用您在 `eclipse.ini` 文件中指定的 JVM 及相关参数启动。 ### 总结 通过上述步骤,您可以成功地在 Eclipse 中指定启动的虚拟机配置。这不仅有助于确保 Eclipse 在...
如果经常需要使用特定的参数启动Eclipse,可以考虑修改Eclipse的启动脚本。对于Windows系统,可以在`eclipse.ini`文件中添加或修改参数。例如,增加以下内容: ```ini -vm D:\Java\jdk1.8.0_251\jre\bin\javaw....
1. 减少 JVM 启动时间:可以在 eclipse.ini 文件中添加 -vm 参数,以避免 JVM 在启动时搜索可用的 JRE。 2. 取消自动激活插件:可以在启动时取消所有插件的自动激活,以减少启动时间。 3. 关闭自动更新:可以关闭 ...
- **Java 虚拟机 (JVM) 参数**:Eclipse 是基于 Java 构建的,因此可以通过 JVM 参数进一步优化 Eclipse 的性能。 #### 三、详细参数解析 ##### 3.1 指定语言环境 (-nl) - **参数**: `-nl` - **描述**: 该参数允许...