`

GC 日志解读/分析

    博客分类:
  • JAVA
 
阅读更多

打印gc log的详细信息 

Java代码  收藏代码
  1. set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -XX:+PrintGCDetails  



或 

引用
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -verbose:gc -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError 


如果真是内存泄漏,系统最终会抛OutOfMemory, 加这个-XX:+HeapDumpOnOutOfMemoryError (jdk1.5以上)可以得到heap dump. 这个dump纪录了所有在OutOfMemory时存在于内存中的对象。用普通的jhat之类的工具分析dump文件不够好。推荐使用SAP Memory Analyzer。用这个工具你可以比较快的定位原因。 

gc日志分析 

引用
[GC [DefNew: 35592K->1814K(36288K), 0.0326932 secs] 38508K->7792K(520256K), 0.0336419 secs]



第一个箭头:35592K->1814K(36288K),箭头指向的是新生段的内存占用情况; 
第二个箭头:38508K->7792K(520256K),箭头指向的是回收后的内存占用情况。 
圆括号中通常指的是当前申请的内存大小。 

引用
[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting occupancy3> -> <ending occupancy3>, <pause time3> secs]


<collector>GC收集器的名称 

<starting occupancy1> 新生代在GC前占用的内存 
<ending occupancy1> 新生代在GC后占用的内存 
<pause time1> 新生代局部收集时jvm暂停处理的时间 

<starting occupancy3> JVM Heap 在GC前占用的内存 
<ending occupancy3> JVM Heap 在GC后占用的内存 
<pause time3> GC过程中jvm暂停处理的总时间 

 

如果回收总量相等,就表示100%的收回,没有任何新生代的对象被提升到中生代或者永久区。而本例中表示3062K没有被回收,即2062K 新生代内容被提升到中生代。 


Java代码  收藏代码
  1. [Full GC 873087K->873087K(955648K), 4.1838200 secs]  
  2. [Full GC 873087K->871781K(955648K), 4.1683140 secs]  
  3. [Full GC 873087K->873087K(955648K), 4.2085010 secs]  
  4. [Full GC 873087K->872260K(955648K), 4.2084700 secs]  
  5. [Full GC 873081K->873081K(955648K), 4.2623640 secs]  
  6. [Full GC 873081K->872408K(955648K), 4.3412570 secs]  
  7. 2011-08-08 17:04:10,819 ERROR [com.koolearn.util.cache.AliMemCacheEngine.get(AliMemCacheEngine.java:164)] - <>  
  8. [Full GC 873087K->873087K(955648K), 4.3155510 secs]  
  9. [Full GC 873087K->872481K(955648K), 4.0971750 secs]  
  10. [Full GC 873087K->873087K(955648K), 4.1474260 secs]  
  11. [Full GC 873087K->872766K(955648K), 4.3128090 secs]  
  12. java.lang.OutOfMemoryError: Java heap space  
  13. [Full GC 873087K->873087K(955648K), 4.3855320 secs]  
  14. [Full GC 873087K->871522K(955648K), 4.2014260 secs]  
  15. [Full GC 871649K->871649K(955648K), 4.5445160 secs]  
  16. [Full GC 873087K->873087K(955648K), 4.3851440 secs]  
  17. [Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor778]  
  18. [Unloading class sun.reflect.GeneratedSerializationConstructorAccessor779]  
  19.  873087K->871942K(955648K), 4.1766480 secs]  
  20. [Full GC 873087K->872056K(955648K), 4.4511170 secs]  
  21. [Full GC 873087K->873087K(955648K), 4.3548710 secs]  
  22. [Full GC 873087K->872185K(955648K), 4.5506940 secs]  



Full GC 即全量GC,垃圾回收分小GC和Full GC。前者针对年轻代,后者针对年老代。FULL GC出现的很多有时候是因为你应用中2M以上的对象比较多。

 

文献转自:http://wentao365.iteye.com/blog/1142837

分享到:
评论

相关推荐

    jvmgc日志分析工具

    "jvmgc日志分析工具"专为解析和可视化JVM生成的GC日志而设计,帮助开发者识别内存瓶颈,调整内存设置,以及诊断可能的性能问题。 GC日志是JVM在运行过程中记录的关于垃圾收集活动的详细信息,包括垃圾收集的起始...

    gcviewer监控gc工具

    通过解读GC日志,GCViewer能够帮助开发者识别潜在的内存泄漏、性能瓶颈以及调整优化内存配置。 一、GCViewer简介 GCViewer是基于Java Swing的GUI应用,由Chris Newland开发,它能够解析并可视化JVM生成的GC日志,...

    gchisto:GC日志分析工具,网上不容易找到原始码,这里备份一个。不确定工具是否正确,不确定是否有时间研究

    《gchisto:GC日志分析工具的探索与解析》 在Java开发中,垃圾收集(Garbage Collection, GC)是内存管理的重要组成部分,而理解GC的行为对于优化应用程序性能至关重要。gchisto是一款用于分析Java GC日志的开源...

    gchisto.jar可以下载

    《gchisto.jar:一款强大的可视化GC日志分析工具》 在Java开发中,垃圾收集(Garbage Collection, GC)是至关重要的一个环节,它负责自动管理内存,避免内存泄漏和性能瓶颈。然而,理解GC的工作原理和优化往往是一...

    GCLogViewer(java性能分析工具)

    GCLogViewer是一款专为Java开发者设计的性能分析工具,尤其适用于GC日志的解析和可视化,它能够帮助开发者深入了解GC行为,从而优化应用性能。 GCLogViewer的名称直接揭示了它的主要功能——查看GC日志。在Java中,...

    2004-11-GC程序员考试题.rar_gc_程序员考试

    5. **GC日志分析**:学习如何解读GC日志,从中获取优化线索,判断是否存在性能问题。 6. **JVM参数调优**:熟悉常用的JVM参数,如-Xms、-Xmx、-XX:NewRatio、-XX:+UseConcMarkSweepGC等,了解如何根据应用需求调整...

    GCLogViewer-0.3-win64

    GCLogViewer-0.3-win64是一款专为64位系统设计的GC日志分析工具,它帮助开发者深入解析和理解Java应用的内存行为。 GCLogViewer的主要功能在于解析和可视化Java虚拟机(JVM)生成的GC日志,这些日志记录了每次垃圾...

    Sun Hotspot V1.6.0 JVM GC PPT.pdf

    #### 五、GC日志解读 使用`-verbose:gc`、`-XX:+PrintGCDetails`以及`-Xloggc:gc.log`等选项可以输出详细的GC日志信息。 例如,串行GC的日志输出如下: ``` [GC [DefNew: 11509K-&gt;1138K(14336K), 0.0110060 secs]...

    gchisto分析工具

    - **日志解析**:JVM日志中包含了GC事件,gchisto可以解析这些日志文件,生成分析报告。 - **与其他工具集成**:一些性能监控工具如VisualVM、JConsole等,也集成了gchisto的功能,可以直接在这些工具中进行分析。...

    性能分析工具.zip

    通过分析GC日志,我们可以调整JVM的内存设置,优化垃圾收集策略,以达到更好的应用响应时间和更低的系统负载。 接下来,HeapAnalyzer是专门用于分析Java堆内存的工具。它可以帮助我们定位内存泄漏和不合理的内存...

    MSB企业级JVM优化与性能调优课程 解读JVM内部机制-针对性解决企业架构优化问题

    - **GC日志分析**:通过分析GC日志来了解垃圾回收器的工作状态。 - **JMX监控**:通过Java Management Extensions (JMX) 来监控和管理运行中的Java应用。 ##### 2.3 解决方案实现 基于前面的问题定位和数据分析...

    JDK10GC-cheatsheet.pdf

    GC日志详情参数: -verbose:gc和-Xlog:gc提供基本GC信息,更详细的选项如-Xlog:gc*、-Xlog:task*、-Xlog:heap*、-Xlog:age*、-Xlog:ref*、-Xlog:ergo*、-XX:+PrintPromotionFailure等用于监控和调试GC行为。 -Xlog:...

    Jvm堆栈dump文件分析

    4. **GC日志分析**:与垃圾收集(Garbage Collection, GC)相关的日志分析,帮助优化垃圾回收策略,减少不必要的停顿时间。 5. **性能报告**:生成详细的性能报告,包括内存使用趋势、线程活动、类加载统计等,为...

    B站日志系统的演进之路.pdf

    B站为了规范业务日志的输出和便于后续的日志分析与管理,制定了统一的日志规范。规范中明确了日志的格式和包含的元信息,例如: - 时间(time):日志产生的时间,遵循ISO8601格式; - 等级(level):日志的严重性...

    GC:乱码电路

    - 使用合适的工具(如JVisualVM或Eclipse Memory Analyzer)分析和解读GC日志。 - 理解并适当地配置JVM的垃圾收集器和内存参数,如`-XX:+UseConcMarkSweepGC`,`-XX:NewRatio`等。 通过以上措施,我们可以有效地...

    D17092GC30-Oracle Database 10g-Administration Workshop II

    - 掌握如何处理常见的数据库错误和警告,如ORA-错误代码的解读。 - 定期进行数据库健康检查,包括检查数据库状态、性能指标和日志文件。 7. **高可用性与容错**: - Oracle的RAC(Real Application Clusters)...

    Java底层知识点、源码解读,技术栈相关原理知识点、工具解读最佳实践、功能点实战,问题排查,开发技巧等.zip

    问题排查是开发过程中不可或缺的技能,包括堆栈跟踪分析、日志分析、性能监控(如JProfiler、VisualVM)等。这些技巧能帮助开发者诊断并修复运行时错误,优化系统性能。 最后,开发技巧涵盖了编码规范、重构、代码...

    Java内存分配及垃圾回收文章汇总

    最后,"GC Log分析.doc"可能会讲解如何通过分析GC日志来诊断和解决问题。GC日志记录了垃圾回收的过程和结果,包括GC的启动时间、耗时、内存使用情况等。通过对这些信息的解读,开发者可以发现系统的潜在问题,比如...

    常用JVM配置参数.ppt

    - **作用**:此参数用于指定GC日志的输出位置,便于后续对日志文件进行分析。 - **示例输出**:该参数本身不直接输出信息,而是指定了日志文件的路径,如“log/gc.log”。 #### 三、堆的分配参数 ##### -Xms 和 -...

Global site tag (gtag.js) - Google Analytics