性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。
Gc日志参数
通过在tomcat启动脚本中添加相关参数生成gc日志
-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。
打开-xx:+ printGCdetails开关,可以详细了解GC中的变化。
打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。
最后,通过-xx: + PrintHeapAtGC开关了解堆的更详细的信息。
为了了解新域的情况,可以通过-XX:=PrintTenuringDistribution开关了解获得使用期的对象权。
-Xloggc:$CATALINA_BASE/logs/gc.log gc日志产生的路径
XX:+PrintGCApplicationStoppedTime // 输出GC造成应用暂停的时间
-XX:+PrintGCDateStamps // GC发生的时间信息
Gc日志
日志中显示了gc发生的时间,young区回收情况,整体回收情况,fullGC情况,回收所消耗时间等
常用JVM参数
分析gc日志后,经常需要调整jvm内存相关参数,常用参数如下
-Xms:初始堆大小,默认为物理内存的1/64(<1GB);默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制
-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制
-Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与jmap -heap中显示的New gen是不同的。整个堆大小=新生代大小 + 老生代大小 + 永久代大小。
在保证堆大小不变的情况下,增大新生代后,将会减小老生代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-XX:SurvivorRatio:新生代中Eden区域与Survivor区域的容量比值,默认值为8。两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10。
-Xss:每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。应根据应用的线程所需内存大小进行适当调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。一般小的应用, 如果栈不是很深, 应该是128k够用的,大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。和threadstacksize选项解释很类似,官方文档似乎没有解释,在论坛中有这样一句话:"-Xss is translated in a VM flag named ThreadStackSize”一般设置这个值就可以了。
-XX:PermSize:设置永久代(perm gen)初始值。默认值为物理内存的1/64。
-XX:MaxPermSize:设置持久代最大值。物理内存的1/4。
Gc日志分析工具
(1)GCHisto
http://java.net/projects/gchisto
直接点击gchisto.jar就可以运行,点add载入gc.log
统计了总共gc次数,youngGC次数,FullGC次数,次数的百分比,GC消耗的时间,百分比,平均消耗时间,消耗时间最小最大值等
统计的图形化表示
YoungGC,FullGC不同消耗时间上次数的分布图,勾选可以显示youngGC或fullGC单独的分布情况
整个时间过程详细的gc情况,可以对整个过程进行剖析
(2)GCLogViewer
http://code.google.com/p/gclogviewer/
点击run.bat运行
整个过程gc情况的趋势图,还显示了gc类型,吞吐量,平均gc频率,内存变化趋势等
Tools里还能比较不同gc日志
(3)HPjmeter
获取地址 http://www.hp.com/go/java
参考文档 http://www.javaperformancetuning.com/tools/hpjtune/index.shtml
工具很强大,但只能打开由以下参数生成的GC log, -verbose:gc -Xloggc:gc.log,添加其他参数生成的gc.log无法打开。
(4)GCViewer
http://www.tagtraum.com/gcviewer.html
这个工具用的挺多的,但只能在JDK1.5以下的版本中运行,1.6以后没有对应。
(5)garbagecat
http://code.google.com/a/eclipselabs.org/p/garbagecat/wiki/Documentation
其它监控方法
Jvisualvm动态分析jvm内存情况和gc情况,插件:visualGC
jvisualvm还可以heapdump出对应hprof文件(默认存放路径:监控的服务器 /tmp下),利用相关工具,比如HPjmeter可以对其进行分析
grep Full gc.log粗略观察FullGC发生频率
jstat –gcutil [pid] [intervel] [count]
jmap -histo pid可以观测对象的个数和占用空间
jmap -heap pid可以观测jvm配置参数,堆内存各区使用情况
jprofiler,jmap dump出来用MAT分析
如果要分析的dump文件很大的话,就需要很多内存,很容易crash。
所以在启动时,我们应该加上一些参数: Java –Xms512M –Xmx1024M –Xss8M
转自:http://qa.blog.163.com/blog/static/19014700220128199421589/
参考资料:
(一)探秘Java虚拟机——内存管理与垃圾回收http://sunbean.blog.51cto.com/972509/768034
相关推荐
IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具IBM gc 日志分析工具
**GChisto GC日志分析工具** 在Java应用程序中,垃圾收集(Garbage Collection, GC)是自动管理内存的关键组成部分。然而,理解GC的工作方式以及它如何影响应用性能可能是一项复杂的任务。这就是GChisto这样的工具...
GC日志分析工具是用来理解和优化JVM内存管理的重要工具。"jvmgc日志分析工具"专为解析和可视化JVM生成的GC日志而设计,帮助开发者识别内存瓶颈,调整内存设置,以及诊断可能的性能问题。 GC日志是JVM在运行过程中...
对tomcat的gclog日志进行分析,进行可视化展示,可以查看一些配置参数,检查是否软件是否运行正常
gchisto是一款强大的GC日志分析工具,它能够帮助我们深入解析和可视化GC日志,从而更好地诊断和优化Java应用的内存使用情况。 gchisto的主要功能在于分析Java应用程序产生的GC日志,这些日志通常包含了大量的详细...
GChisto及CMS GC相应补丁文件,补丁文件未亲测。 This patch adds the following features and improvements when using CMS GC in incremental mode: detecting Full GCs corrected parsing errors when using -XX:...
这时,GC日志分析工具就显得尤为必要。GChisto正是这样一款专门用于分析Java虚拟机(JVM)GC日志的专业工具。 GChisto是一款强大的开源工具,设计目标是帮助开发者和运维人员深入理解JVM的内存使用情况,尤其是针对...
虽然功能叫hpjmeter简单,界面也不咋地 不过容错性要比hpjmeter强很多,虽然快照中所有性能指标都挤在一起,但是很直观 总体来说比较强悍,特收金币一枚...
总之,GCViewer作为一款强大的GC日志分析工具,为Java开发者提供了直观、详尽的内存管理视图,对于提升应用性能和稳定性起到了关键作用。熟练掌握其使用方法,能够有效提升Java应用的健壮性和效率。
2. **工具辅助**:使用如VisualVM、JConsole或专门的GC日志分析工具,这些工具能图形化地展示GC活动,使分析更为直观。 3. **日志模式与指标**:理解不同GC日志模式,如CMS、Parallel、G1等,关注关键指标如吞吐量、...
《gchisto:GC日志分析工具的探索与解析》 在Java开发中,垃圾收集(Garbage Collection, GC)是内存管理的重要组成部分,而理解GC的行为对于优化应用程序性能至关重要。gchisto是一款用于分析Java GC日志的开源...
通过熟练掌握GC日志分析、heapDump分析和javaCore日志分析,我们可以更好地调试、优化和维护IBM环境中的应用程序。同时,理解并运用高可用性和线程分析的原理,也能进一步提升系统的可靠性和响应速度。
四、GC日志分析工具 除了使用Java虚拟机提供的命令行参数来实现GC日志分析外,还有许多第三方工具可以用于GC日志分析,例如VisualVM、Java Mission Control等。 五、结论 GC日志分析是Java开发者不可或缺的一项...
GC日志分析工具则可以帮助开发者理解JVM内部的垃圾回收行为,优化应用程序性能。GChisto和GCViewer是两个常用的Java GC日志分析工具,它们能够提供深入的洞察力,帮助我们识别潜在的内存泄漏问题,调整垃圾收集器...
java垃圾回收日志分析工具GCViewer,包内含有15年9月1日所能下载到的最新代码及代码打包的jar文件,双击即可执行。 本GCViewer是最新版本的,是JDK1.8编译并支持JDK1.8的GC 日志文件分析。 GCViewer是业内支持率很高...
总结来说,GCViewer是一款强大的Java Full GC分析工具,它通过图形化界面使复杂的GC日志变得易于理解和分析。通过深入理解GCViewer的功能和使用方法,开发者能够更好地诊断和优化Java应用程序的内存性能,提升整体...
IBM的garbage collection (GC) 分析工具,通常用于优化WebSphere Application Server (WAS)的性能。...在分析gc日志的过程中,结合WAS的监控工具和其他性能分析工具,能进一步增强问题定位和解决能力。
日志分析器则是用来处理和解析这些日志信息的工具,帮助我们查找模式、检测问题或进行性能分析。"Log4SqlAnalysis"可能是一个基于SQL数据库的日志分析解决方案,它可能提供以下功能: 1. **数据导入**:将日志文件...
GCviewer是一款强大的Java垃圾收集(Garbage Collection,简称GC)分析工具,版本1.35提供了对Java应用程序内存管理的深度洞察。它可以帮助开发者理解、优化和调试应用程序的内存行为,从而提升性能,避免内存泄漏等...