专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
芋道源码  ·  SpringBoot启动原理详解(图文全面总结) ·  昨天  
Java知音  ·  Java面试八股文背到崩溃?Deepseek ... ·  2 天前  
Java知音  ·  Java面试八股文背到崩溃?Deepseek ... ·  2 天前  
芋道源码  ·  一款OCR神器,5.6K ... ·  2 天前  
芋道源码  ·  微服务架构中10个常用的设计模式 ·  2 天前  
芋道源码  ·  SpringBoot ... ·  3 天前  
51好读  ›  专栏  ›  ImportNew

JVM(6):JVM 调优 - 从 Eclipse 开始

ImportNew  · 公众号  · Java  · 2017-03-15 20:28

正文

(点击 上方公众号 ,可快速关注)


来源:纯洁的微笑,

www.cnblogs.com/ityouknow/p/5647513.html

如有好文章投稿,请点击 → 这里了解详情


概述


什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipse gc日志为例来示例如何根据gc日志来分析jvm内存而进行调优,像根据关闭eclipse启动项、关闭各种校验等措施来优化eclipse本文不再阐述,网上有很多,本次测试的eclipse已经进行了配置上面的优化。


准备环境


eclipse版本:Release 4.5.0

eclipse 默认配置:eclipse.ini


-startup

plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar

--launcher.library

plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417

-product

org.eclipse.epp.package.jee.product

--launcher.defaultAction

openFile

--launcher.XXMaxPermSize

256M

-showsplash

org.eclipse.platform

--launcher.XXMaxPermSize

256m

--launcher.defaultAction

openFile

--launcher.appendVmargs

-vmargs

-Dosgi.requiredJavaVersion=1.7

-Xms256m

-Xmx1024m


在配置的末尾处添加如下配置文件:


-XX:+PrintGCDetails   // 输出GC的详细日志


-XX:+PrintGCDateStamps // 输出GC的时间戳(以日期的形式)


-Xloggc:gc.log  // 输出GC的详细日志


eclipse启动计时插件:


http://www.chendd.cn/information/viewInformation/experienceShare/148.a


GChisto.jar:gc日志分析工具jar包一个



Visual GC: java自带的内存监控工具,通过visual gc可以实时的监控到各个内存区域的变化。


如何分析GC日志


摘录GC日志一部分(绿色为年轻代gc回收;蓝色为full gc回收):


2016-07-05T10:43:18.093+0800: 25.395: [GC [PSYoungGen: 274931K->10738K(274944K)] 371093K->147186K(450048K), 0.0668480 secs] [Times: user=0.17 sys=0.08, real=0.07 secs]


2016-07-05T10:43:18.160+0800: 25.462: [Full GC [PSYoungGen: 10738K->0K(274944K)] [ParOldGen: 136447K->140379K(302592K)] 147186K->140379K(577536K) [PSPermGen: 85411K->85376K(171008K)], 0.6763541 secs] [Times: user=1.75 sys=0.02, real=0.68 secs]


通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。其中PSYoungGen表示gc回收前后年轻代的内存变化;ParOldGen表示gc回收前后老年代的内存变化;PSPermGen表示gc回收前后永久区的内存变化。young gc 主要是针对年轻代进行内存回收比较频繁,耗时短;full gc 会对整个堆内存进行回城,耗时长,因此一般尽量减少full gc的次数


通过两张图非常明显看出gc日志构成:


young gc 日志



Full GC日志



启动调优


启动eclipse查看默认配置下启动时间大概是22秒。



根据GChisto分析gc日志看出来,启动过程中进行了一次full gc,19次minor gc;full gc和young gc的时间差不多都是0.65秒左右。








请到「今天看啥」查看全文