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

【转】优化eclipse运行速度

阅读更多

转载:http://www.iteye.com/topic/756538

作者:beckrabbit

 

性能优化从身边做起。 

首先建立评估体系,将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启动运行速度调优

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

    Eclipse 启动运行速度调优

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

    优化eclipse3.61版本android匹配速度文件

    本指南将详细探讨如何通过优化配置来提升Eclipse对于Android开发的运行速度。 首先,我们需要了解Eclipse的性能瓶颈可能来自何处。这通常包括以下几个方面: 1. **插件冲突**:Eclipse支持大量插件,但过多或不...

    可以优化eclipse卡顿

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

    Eclipse 运行命令行参数大全

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

    eclipse配置优化

    例如,可以将 `-Xms`、`-Xmx`、`-Xmn` 等设置与上述相同,以优化Eclipse的内存使用。 - 另外,可以考虑关闭不必要的Eclipse插件和服务,减少启动时的负担。在 `eclipse.ini` 文件中,通过 `-plugin` 参数来管理插件...

    eclipse性能优化

    通过上述优化步骤,开发者可以显著改善Eclipse的运行效率,提高开发体验,减少因性能问题导致的中断,从而提高整体的开发效率。在实际操作中,可以根据具体问题和需求,灵活选择和应用这些优化策略。

    Eclipse设置、调优、使用详解

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

    详细品味eclipse性能优化

    优化Eclipse的性能主要可以从以下几个方面着手: 1. **启动优化**:减少启动时加载的插件数量可以显著提升Eclipse的启动速度。可以在配置文件`eclipse.ini`中调整启动参数,例如通过`-clearPersistedState`选项清空...

    Eclipse 优化

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

    eclipse启动加速插件

    针对这个问题,我们可以利用特定的插件来优化Eclipse的启动速度。 标题中的"eclipse启动加速插件"指的是那些设计用于提高Eclipse启动速度的工具。这些插件通常通过减少启动时加载的组件或优化内存管理来实现加速。...

    Eclipse IDE开发平台配置及参数深度优化说明

    - **解释**:这些参数用于控制Eclipse运行时的内存分配,通过调整这些参数可以显著提升Eclipse的启动速度和运行效率。 **2. 设置Web容器字符编码格式** - **URI Encoding**:将Web容器的字符编码设置为`UTF-8`...

    Eclipse启动优化

    - **热启动**:后续启动Eclipse,只需加载上次运行的状态,速度较快。避免频繁重启Eclipse可以减少冷启动次数。 6. **使用Eclipse Marketplace Client (EMC) 替代p2更新机制** - p2更新机制会消耗大量时间和资源...

    eclipse启动时间插件

    这个插件的目的是优化Eclipse的启动过程,减少启动时间,让开发者能够更快地进入工作状态。通常,这样的插件会通过各种方式来实现这一目标,比如缓存部分数据、延迟加载非核心功能、智能管理插件加载顺序等。具体到...

    MyEclipse启动和运行速度优化

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

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

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

    eclipse背景主题插件

    Eclipse是一款广泛使用的开源集成开发环境(IDE),主要用于Java编程,但通过插件也可支持其他编程语言。在本文中,我们将深入探讨...同时,理解插件的工作原理以及如何管理插件,对于优化Eclipse使用体验至关重要。

    eclipse_202206版本

    更快的运行速度可以让开发者在编写和测试代码时更加流畅,减少等待时间,提高工作效率。 其次,新版本通常会引入对最新技术的支持。例如,对于Java,它可能支持最新的Java开发工具集(JDK)版本,比如Java 17或更高...

    eclipse linux32安装包

    - 调整启动参数:可以通过修改启动脚本来优化Eclipse的启动速度,例如减少启动时加载的插件数量。 - 内存配置:对于32位系统,内存限制可能是个挑战,需要适当调整eclipse.ini文件中的内存分配参数。 8. **更新和...

Global site tag (gtag.js) - Google Analytics