`
GhostWolf
  • 浏览: 309408 次
  • 性别: 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启动运行速度调优

    Eclipse启动运行速度调优,好用,亲测!

    优化eclipse使用速度的调试技巧

    【优化Eclipse使用速度的调试技巧】 在编程工作中,Eclipse作为一款强大的Java IDE,其性能和调试效率直接影响着开发者的生产力。以下是一些能够提升Eclipse使用速度和调试体验的实用技巧: 1. **条件断点**:在...

    MyEclipse启动和运行速度优化

    Eclipse运行速度优化

    eclipse配置优化

    简单的eclipse配置优化,有效提高eclipse的开启速度和运行速度

    eclipse性能优化

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

    Eclipse优化设置教程.docx

    针对Eclipse运行卡顿的问题,主要原因是JVM内存管理,特别是垃圾回收(GC)过程导致的性能影响。我们可以通过调整JVM内存设置来解决这个问题: 1. **调整JVM内存大小**:在`eclipse.ini`文件中设置`-Xmx`和`-Xms`...

    eclipse中常用配置

    在使用技巧方面,关闭不必要的validation可以提高Eclipse的运行速度,仅在需要时手动验证。调试功能通过设置断点和使用F5、F6、F7、F8等快捷键,使开发者能更有效地追踪代码执行流程。 最后,Eclipse的快捷键如Ctrl...

    Eclipse+ProGuard配置

    * 提高应用程序的运行效率:通过优化和压缩,可以减少应用程序的体积,提高应用程序的加载速度和运行效率。 * 提高开发效率:Eclipse 和 ProGuard 的结合使用,可以简化应用程序的开发和维护过程,提高开发效率。 ...

    Android-Studio和eclipse优化.pdf

    1. **安装Intel HAXM模拟器加速**:HAXM(Hardware Accelerated Execution Manager)是Android模拟器的硬件加速器,它可以显著提升模拟器的运行速度。确保你的电脑支持虚拟化技术,并在Android SDK Manager中安装...

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

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

    Eclipse的编辑功能快捷键

    4. **Ctrl+D** - 删除当前行,省去了多次按删除键的麻烦,提高代码清理速度。 5. **Ctrl+M** - 这个快捷键可以最大化或还原当前编辑窗口,优化代码查看和编辑体验。 查找和定位快捷键: 1. **Ctrl+K** 和 **Ctrl+...

    Eclipse使用指南.doc

    - **eclipse.ini配置**:这是Eclipse启动配置文件,用户可以通过修改它来调整内存分配、添加启动参数等,以优化Eclipse的启动性能和稳定性。 - **代码模板**:Eclipse支持自定义代码模板,如通过Add code template...

    Eclipse技巧

    在本文中,我们将深入探讨"Eclipse技巧",包括如何有效地安装和运行Eclipse、管理工作空间和项目、编写Java代码的技巧,以及性能优化建议。这些知识将帮助你提升Eclipse开发体验,让你在组织中成为Eclipse使用的专家...

    eclipse和STS配置.docx

    - **STS(Spring Tool Suite)**:是Eclipse的定制版,专为Spring开发优化,包含了更多与Spring相关的工具和集成。 - **环境变量**:在操作系统中设置环境变量是为了让系统知道如何定位和使用特定的软件或库。 - **INI...

    maximo eclipse

    配置Maximo Eclipse的主要目标是创建一个高效的开发环境,支持Maximo6的源代码编辑、调试和热部署,以提升开发速度和代码质量。通过Eclipse的集成,开发者可以实现单步跟踪代码,实时查看系统运行状态,快速定位并...

    flex编译优化方法

    9. **优化Eclipse配置**:检查并调整Eclipse的Flex相关设置,例如禁用某些不必要的编译步骤。 通过以上方法,可以显著提升Flex项目的编译速度和Eclipse的运行效率。然而,优化是一个持续的过程,应根据实际开发环境...

    java开发性能优化

    在编程中,我们需要关注代码的运行效率,以确保程序在处理大量数据或高并发场景下仍能保持高效。以下是一些Java编程中为了性能需要注意的地方: 1. **单例模式的使用**:单例模式可以避免频繁创建对象,节省内存...

    Caffe使用Eclipse调试1

    6. **编译优化**:为了加快构建速度,可以右键点击`caffe-master` -> `Properties` -> `C/C++ Build`,修改构建命令为`make -j`,这里的`j`代表并行构建的CPU核心数。 7. **调试模式**:要进行调试,需要在`...

    JBoss_AS7+JBoss_Tools+Eclipse3.7集成介绍

    在性能方面,JBoss AS7 显示出了卓越的运行速度,这得益于其对模块化架构的深入优化,以及对内存管理和线程调度的改进。此外,它全面支持 J2EE 规范,包括 EJB(Enterprise JavaBeans)、JPA(Java Persistence API...

Global site tag (gtag.js) - Google Analytics