`
bestxiaok
  • 浏览: 453933 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何更快的启动eclipse

阅读更多

总是感觉自己的elipse启动比别人的慢,开始以为是装的插件太多(pydev,GAE,scala……)或者是导入的项目有点大。后来把-Xloggc:gc.log这个配置加上去看看启动的日志,吓了一跳,一次启动做了9次fullgc。和jboss服务器一样,肯定可以优化一下配置来更少的full gc来节约启动时间。

   第一次优化:把-Xms(初始化堆大小) -Xmx(JVM最大堆大小)设置为一样大小512m,避免GC后JVM重新分配内存。但是重启eclipse的时候full gc的次数并没有减少,而且启动的时候GC全部变成了full gc,日志如下:

3.308: [Full GC 3.308: [Tenured: 0K->19530K(262144K), 0.1515426 secs] 172215K->19530K(498112K), [Perm : 16383K->16383K(16384K)], 0.1516281 secs] [Times: user=0.14 sys=0.00, real=0.15 secs] 

8.472: [Full GC 8.472: [Tenured: 19530K->34170K(262144K), 0.2060534 secs] 145021K->34170K(498112K), [Perm : 20479K->20479K(20480K)], 0.2061412 secs] [Times: user=0.19 sys=0.00, real=0.21 secs] 

9.027: [Full GC 9.027: [Tenured: 34170K->35855K(262144K), 0.1790415 secs] 54259K->35855K(498112K), [Perm : 24575K->24575K(24576K)], 0.1791281 secs] [Times: user=0.19 sys=0.00, real=0.18 secs] 

10.004: [Full GC 10.004: [Tenured: 35855K->44735K(262144K), 0.2850547 secs] 81210K->44735K(498112K), [Perm : 28671K->28646K(28672K)], 0.2851505 secs] [Times: user=0.28 sys=0.00, real=0.28 secs] 

10.725: [Full GC 10.725: [Tenured: 44735K->49542K(262144K), 0.2657311 secs] 71680K->49542K(498112K), [Perm : 32759K->32759K(32768K)], 0.2658216 secs] [Times: user=0.25 sys=0.00, real=0.27 secs] 

12.057: [Full GC 12.057: [Tenured: 49542K->64706K(262144K), 0.3637080 secs] 179985K->64706K(498112K), [Perm : 36863K->36863K(36864K)], 0.3637938 secs] [Times: user=0.37 sys=0.00, real=0.36 secs] 

12.788: [Full GC 12.788: [Tenured: 64706K->65640K(262144K), 0.3229940 secs] 87100K->65640K(498112K), [Perm : 40959K->40959K(40960K)], 0.3230836 secs] [Times: user=0.31 sys=0.00, real=0.32 secs] 

13.652: [Full GC 13.652: [Tenured: 65640K->70639K(262144K), 0.4553435 secs] 116918K->70639K(498112K), [Perm : 45055K->44963K(45056K)], 0.4554289 secs] [Times: user=0.45 sys=0.00, real=0.46 secs] 

14.679: [Full GC 14.679: [Tenured: 70639K->72308K(262144K), 0.4009647 secs] 122313K->72308K(498112K), [Perm : 49151K->49151K(49152K)], 0.4010552 secs] [Times: user=0.38 sys=0.00, real=0.40 secs] 

    从日志中分析可以看出:触发full gc的罪魁祸首是Perm,这个没有设置,所以继续优化!

    第二次优化:-XX:PermSize=64m  -XX:MaxPermSize=64m,把持久化的初始化大小和最大大小设置为一样。Full gc消失了,来了24次minor gc。

0.689: [GC 0.689: [DefNew: 32256K->2724K(36288K), 0.0108873 secs] 32256K->2724K(520256K), 0.0109685 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

1.020: [GC 1.020: [DefNew: 34980K->3090K(36288K), 0.0159294 secs] 34980K->5812K(520256K), 0.0159941 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 

1.451: [GC 1.451: [DefNew: 35346K->2612K(36288K), 0.0131000 secs] 38068K->8344K(520256K), 0.0131866 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 

2.670: [GC 2.674: [DefNew: 34868K->4032K(36288K), 0.0338445 secs] 40600K->14881K(520256K), 0.0357554 secs] [Times: user=0.03 sys=0.02, real=0.04 secs] 

3.537: [GC 3.537: [DefNew: 36280K->4032K(36288K), 0.0297593 secs] 47129K->19882K(520256K), 0.0298390 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 

3.595: [GC 3.595: [DefNew: 36223K->74K(36288K), 0.0121076 secs] 52074K->19924K(520256K), 0.0122015 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

4.108: [GC 4.108: [DefNew: 32330K->1755K(36288K), 0.0071144 secs] 52180K->21605K(520256K), 0.0071898 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

7.550: [GC 7.550: [DefNew: 34011K->4032K(36288K), 0.0460676 secs] 53861K->35250K(520256K), 0.0461438 secs] [Times: user=0.05 sys=0.00, real=0.05 secs] 

8.818: [GC 8.818: [DefNew: 36288K->4032K(36288K), 0.0352634 secs] 67506K->38332K(520256K), 0.0353470 secs] [Times: user=0.05 sys=0.00, real=0.04 secs] 

9.926: [GC 9.926: [DefNew: 36288K->4032K(36288K), 0.0410570 secs] 70588K->45524K(520256K), 0.0411413 secs] [Times: user=0.03 sys=0.02, real=0.04 secs] 

10.332: [GC 10.332: [DefNew: 36288K->4031K(36288K), 0.0325734 secs] 77780K->52292K(520256K), 0.0326496 secs] [Times: user=0.05 sys=0.00, real=0.03 secs] 

10.583: [GC 10.583: [DefNew: 36287K->4031K(36288K), 0.0250005 secs] 84548K->57151K(520256K), 0.0250791 secs] [Times: user=0.03 sys=0.00, real=0.02 secs] 

10.765: [GC 10.765: [DefNew: 36213K->4032K(36288K), 0.0691980 secs] 89333K->72388K(520256K), 0.0692885 secs] [Times: user=0.08 sys=0.00, real=0.07 secs] 

10.977: [GC 10.977: [DefNew: 36288K->4031K(36288K), 0.0426303 secs] 104644K->81872K(520256K), 0.0427115 secs] [Times: user=0.05 sys=0.00, real=0.04 secs] 

11.211: [GC 11.211: [DefNew: 36287K->4032K(36288K), 0.0550659 secs] 114128K->91896K(520256K), 0.0551464 secs] [Times: user=0.03 sys=0.02, real=0.06 secs] 

11.641: [GC 11.641: [DefNew: 36288K->3147K(36288K), 0.0295076 secs] 124152K->93474K(520256K), 0.0296096 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 

12.591: [GC 12.591: [DefNew: 35403K->2274K(36288K), 0.0241671 secs] 125730K->95722K(520256K), 0.0242549 secs] [Times: user=0.02 sys=0.02, real=0.02 secs] 

12.896: [GC 12.896: [DefNew: 34530K->3023K(36288K), 0.0193394 secs] 127978K->98567K(520256K), 0.0194275 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 

13.249: [GC 13.249: [DefNew: 35280K->939K(36288K), 0.0161462 secs] 130824K->99419K(520256K), 0.0162313 secs] [Times: user=0.01 sys=0.00, real=0.02 secs] 

13.919: [GC 13.919: [DefNew: 33195K->2070K(36288K), 0.0124033 secs] 131675K->100550K(520256K), 0.0125083 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 

14.396: [GC 14.396: [DefNew: 34326K->4032K(36288K), 0.0204527 secs] 132806K->104239K(520256K), 0.0205335 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 

14.554: [GC 14.554: [DefNew: 36288K->4031K(36288K), 0.0554755 secs] 136495K->114252K(520256K), 0.0555567 secs] [Times: user=0.06 sys=0.00, real=0.06 secs] 

14.735: [GC 14.735: [DefNew: 36287K->4031K(36288K), 0.0728643 secs] 146508K->129069K(520256K), 0.0729860 secs] [Times: user=0.06 sys=0.00, real=0.07 secs] 

14.954: [GC 14.954: [DefNew: 36287K->4032K(36288K), 0.0529429 secs] 161325K->137308K(520256K), 0.0530283 secs] [Times: user=0.05 sys=0.00, real=0.05 secs] 

15.308: [GC 15.308: [DefNew: 36288K->1126K(36288K), 0.0192389 secs] 169564K->138221K(520256K), 0.0193313 secs]

   从日志中分析可以看出:频繁的minor gc是由新生代没有设置自动分配造成的。

    第三次优化:-Xmn256m 设置新生代大小为256M。好了,就4次minor gc。完成任务。日志如下:

3.592: [GC 3.592: [DefNew: 209792K->19904K(235968K), 0.0765218 secs] 209792K->19904K(498112K), 0.0766072 secs] [Times: user=0.06 sys=0.02, real=0.08 secs] 

10.457: [GC 10.457: [DefNew: 229696K->26176K(235968K), 0.1996293 secs] 229696K->58203K(498112K), 0.1997121 secs] [Times: user=0.17 sys=0.03, real=0.20 secs] 

12.862: [GC 12.862: [DefNew: 235968K->17131K(235968K), 0.1315169 secs] 267995K->74647K(498112K), 0.1315965 secs] [Times: user=0.14 sys=0.00, real=0.13 secs] 

14.465: [GC 14.465: [DefNew: 226923K->26176K(235968K), 0.1363962 secs] 284439K->101396K(498112K), 0.1364835 secs]

最后的配置如下:

-Xmn128m

-Xms512m

-Xmx512m

-XX:PermSize=64m  

-XX:MaxPermSize=64m

-verbose:gc

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails 

-Xloggc:gc.log

分享到:
评论
4 楼 bestxiaok 2011-04-27  
为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同

感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log

输入出的内容是:

0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]

这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?
xgj1988 写道
为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同

感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log


输入出的内容是:

0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]


这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?

可能是跟版本有关系吧,这个的目的就是为了快速的启动eclipse,别的其实没大关系的。
3 楼 xgj1988 2011-04-27  
为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同

感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log


输入出的内容是:

0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]


这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?
2 楼 fantasy 2011-02-18  
好文,学到的JVM和GC的知识终于得以运用了 呵呵
1 楼 bestxiaok 2010-09-12  
面试问的是不是挺多的,等等吧!

相关推荐

    Eclipse常见问题及解决方法

    这将创建一个Eclipse的快捷方式,使得用户可以快速启动Eclipse。 知识点:Eclipse 快捷方式的创建,桌面右键新建启动器,命令路径设置。 2. 如何显示行号? 选 择 Window->Preferences, 然 后 选 择 General->...

    eclipse启动时间插件

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

    Ubuntu-eclipse安装

    添加面板启动器可以让用户快速启动Eclipse。右键点击面板,选择“添加到面板”,然后选择“自定义应用程序启动器”,添加以下信息: 名称:Eclipse 命令:/home/glc/.java/eclipse/eclipse 然后,修改一下图标...

    Maven在eclipse中的项目启动命令

    ### Maven在Eclipse中的项目启动命令详解 #### 一、Maven简介 Maven是一款流行的自动化构建工具,它主要用于Java项目的构建与管理。Maven通过一个中心信息文件`pom.xml`来管理项目的构建过程、依赖关系以及其他...

    点击eclipse中的小猫启动项目

    如果你选择不进行WAR导出,Eclipse将直接把项目文件复制到Tomcat的工作目录,这样改动会立即生效,适合快速开发和调试。如果需要发布正式版本,可能需要导出WAR文件以保持项目结构的整洁。 4. **启动项目** - 完成...

    启动Eclipse时出现问题:解决initializing java tooling(1%)

    - 确认你的系统有足够的磁盘空间和处理器资源来启动Eclipse。如果资源紧张,Eclipse可能无法顺利启动。 9. **修复Eclipse安装**: - 尝试重新安装Eclipse,或者从官方网站下载最新版本替换现有安装。 10. **日志...

    eclipse启动加速插件

    "超爽,多个eclipse之间,eclipse与其它程序之间快速切换,没有一点卡的现象"这部分描述暗示了插件不仅加速了Eclipse的启动,还改善了多任务环境下的性能。这可能是通过优化内存管理和线程调度来实现的,使得Eclipse...

    Eclipse快速上手指南

    2. **启动与界面介绍**: 安装完毕后,双击图标启动Eclipse。你会看到一个由菜单栏、工具栏、工作区和透视图组成的界面。工作区是展示项目文件的地方,透视图可以切换不同的工作视图,如Java、Debug等。 3. **创建新...

    快速上手Eclipse Eclipse快捷键指南

    在 Eclipse 中,查看作用域功能快捷键可以帮助开发者快速查看代码。以下是一些常用的查看快捷键: * 全局放大:Ctrl+= * 全局缩小:Ctrl+- * 全局激活编辑器:F12 * 全局切换编辑器:Ctrl+Shift+W * 全局上一个编辑...

    eclipse项目启动快捷插件

    在开发中遇见的问题是,在开发一个项目的时候总需要在浏览器和eclipse直接切换,使用eclipse内置的还不方便,所以此插件就是在eclipse中直接调用浏览器来打开项目的插件,可以很方便快捷的打开项目,只需要把当前...

    eclipse启动优化

    下次启动Eclipse时,这些项目将不会被加载。 二、优化Eclipse配置 Eclipse的启动速度受到其配置文件的影响。以下是一些优化建议: 1. 修改eclipse.ini文件:这是Eclipse的启动配置文件,位于Eclipse安装目录下。...

    Eclipse启动优化

    - 当只需要执行自动化任务,如构建或部署,使用命令行的headless模式启动可以更快。 10. **定期维护** - 定期执行`Help > Check for Updates`,确保Eclipse及其插件都保持最新状态,修复可能存在的性能问题。 ...

    eclipse.zip

    `eclipse.exe - 快捷方式.lnk`则是一个快捷方式,方便用户快速启动Eclipse。 `eclipse.ini`文件是Eclipse的启动配置文件,它定义了启动参数,包括JVM的内存设置、启动时加载的插件和工作空间路径等。这是自定义...

    tigase 5.2完整代码数据库eclipse完美启动版本

    这个压缩包包含的是Tigase 5.2的完整源代码,以及与之配套的MySQL数据库,使得用户能够快速地在Eclipse开发环境中启动和运行服务器。 首先,我们来详细了解Tigase服务器的核心功能和特性: 1. **多协议支持**:...

    eclipse快速打开项目路径

    总的来说,“eclipse快速打开项目路径”是一项基础但至关重要的设置,它让开发者能更顺畅地在Eclipse中工作,快速访问项目文件,进一步提升了开发效率。通过理解和掌握这个操作,您可以更好地利用Eclipse的强大功能...

    eclipsec.zip

    4. `eclipse.exe - 快捷方式.lnk`:这是一个Windows快捷方式,方便用户快速启动Eclipse。 5. `artifacts.xml`:可能包含Eclipse安装或更新过程中的元数据,描述了软件包的组成和依赖关系。 6. `readme`:通常是一...

    eclipse免安装版

    - **快速启动**:由于无需安装过程,启动速度通常比标准安装版更快。 - **无系统残留**:免安装版在卸载时只需删除文件夹,不会在系统注册表或硬盘上留下任何痕迹。 - **适合测试和演示**:在测试新版本或演示时...

    Eclipse開發平台快速入門

    3. 启动:安装完成后,找到Eclipse的快捷方式或者执行文件,点击启动Eclipse。 二、Eclipse界面介绍 Eclipse界面主要由以下几个部分组成: 1. 工作区(Workspace):存放项目和文件的地方,你可以根据需要设置多个...

Global site tag (gtag.js) - Google Analytics