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

Java GC日志查看

阅读更多

 

 

Java GC类型

Java中的GC有哪几种类型?

 

参数

描述

UseSerialGC

虚拟机运行在Client模式的默认值,打开此开关参数后,

使用Serial+Serial Old收集器组合进行垃圾收集。

UseParNewGC

打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。

UseConcMarkSweepGC

打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集。Serial Old作为CMS收集器出现Concurrent Mode Failure的备用垃圾收集器。

UseParallelGC

虚拟机运行在Server模式的默认值,打开此开关参数后,使用Parallel Scavenge+Serial Old收集器组合进行垃圾收集。

UseParallelOldGC

打开此开关参数后,使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集。

 

Java程序启动完成后,通过jps观察进程来查询到当前运行的java进程,使用

jinfo –flag UseSerialGC 进程

 

的方式可以定位其使用的gc策略,因为这些参数都是boolean型的常量,如果使用该种gc策略会出现+号,否则-号。

 

使用-XX:+上述GC策略可以开启对应的GC策略。

 

 

GC日志查看

可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。

 

GC的日志是以替换的方式(>)写入的,而不是追加(>>),如果下次写入到同一个文件中的话,以前的GC内容会被清空。

 

对应的参数列表

-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:../logs/gc.log 日志文件的输出路径

 

 

这里使用如下的参数来进行日志的打印:

-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs

  

对于新生代回收的一行日志,其基本内容如下:

2014-07-18T16:02:17.606+0800: 611.633: [GC 611.633: [DefNew: 843458K->2K(948864K), 0.0059180 secs] 2186589K->1343132K(3057292K), 0.0059490 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

 

 

其含义大概如下:

2014-07-18T16:02:17.606+0800(当前时间戳): 611.633(时间戳): [GC(表示Young GC) 611.633: [DefNew(单线程Serial年轻代GC): 843458K(年轻代垃圾回收前的大小)->2K(年轻代回收后的大小)(948864K(年轻代总大小)), 0.0059180 secs(本次回收的时间)] 2186589K(整个堆回收前的大小)->1343132K(整个堆回收后的大小)(3057292K(堆总大小)), 0.0059490 secs(回收时间)] [Times: user=0.00(用户耗时) sys=0.00(系统耗时), real=0.00 secs(实际耗时)]

 

 

老年代回收的日志如下:

2014-07-18T16:19:16.794+0800: 1630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured:
2573912K->1340650K(2574068K), 1.8511050 secs] 3122548K->1340650K(3579636K), [Perm : 17882K->17882K(21248K)], 2.7854350 secs] [Times: user=2.57 sys=0.22, real=2.79 secs]

 

 

gc日志中的最后貌似是系统运行完成前的快照:

Heap
 def new generation   total 1005568K, used 111158K [0x00000006fae00000, 0x000000073f110000, 0x0000000750350000)
  eden space 893888K,  12% used [0x00000006fae00000, 0x0000000701710e90, 0x00000007316f0000)
  from space 111680K,   3% used [0x0000000738400000, 0x000000073877c9b0, 0x000000073f110000)
  to   space 111680K,   0% used [0x00000007316f0000, 0x00000007316f0000, 0x0000000738400000)
 tenured generation   total 2234420K, used 1347671K [0x0000000750350000, 0x00000007d895d000, 0x00000007fae00000)
   the space 2234420K,  60% used [0x0000000750350000, 0x00000007a2765cb8, 0x00000007a2765e00, 0x00000007d895d000)
 compacting perm gen  total 21248K, used 17994K [0x00000007fae00000, 0x00000007fc2c0000, 0x0000000800000000)
   the space 21248K,  84% used [0x00000007fae00000, 0x00000007fbf92a50, 0x00000007fbf92c00, 0x00000007fc2c0000)
No shared spaces configured.

 

 

GC日志的离线分析

可以使用一些离线的工具来对GC日志进行分析,比如sungchisto(https://java.net/projects/gchisto)gcviewerhttps://github.com/chewiebug/GCViewer ),这些都是开源的工具,用户可以直接通过版本控制工具下载其源码,进行离线分析。

 

下面就已gcviewer为例,简要分析一下gc日志的离线分析,gcviewer源代码工程是maven结构的,可以直接用maven进行package,这里编译的是1.34版本,本版本的快照已经上传至附件中。

 

需要说明的是,gcviewer支持多种参数生成的gc日志,直接通过java –jar的方式运行,加载生成的gc日志即可:

 

 

 

  • 大小: 296 KB
分享到:
评论

相关推荐

    Java虚拟机GC日志分析

    Java虚拟机GC日志分析 Java虚拟机GC日志分析是Java开发者不可或缺的一项技能,通过对GC日志的分析,可以了解Java虚拟机中的内存使用情况,避免内存溢出和性能问题。本文将对Java虚拟机GC日志分析进行详细的介绍,并...

    Java_GC垃圾回收调优指南

    4. **使用GC日志进行微调**:通过启用GC日志记录(如`-XX:+PrintGCDetails`),可以在生产环境中监控垃圾回收的具体行为,并据此进行更精细的调整。 5. **避免内存泄漏**:定期检查代码中的内存泄漏问题,减少不必...

    GChisto GC日志分析工具

    2. **获取GC日志**: 首先确保Java应用配置了生成GC日志,通常在JVM启动参数中添加`-XX:+PrintGC`和`-XX:+PrintGCDetails`选项。 3. **运行GChisto**: 在解压后的目录中,双击`GChisto.jar`文件,启动工具。 4. **...

    JAVA gc日志分析工具GChisto及CMS 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日志

    机器 gc 日志上传,用于分析问题,主要是 查看gc有无问题

    gcviewer监控gc工具

    GCViewer是基于Java Swing的GUI应用,由Chris Newland开发,它能够解析并可视化JVM生成的GC日志,提供丰富的图表展示GC活动,如GC时间、堆内存使用情况、对象生存周期等,帮助开发者深入了解JVM内部的垃圾收集过程。...

    java垃圾回收日志分析工具GCViewer

    java垃圾回收日志分析工具GCViewer,包内含有15年9月1日所能下载到的最新代码及代码打包的jar文件,双击即可执行。 本GCViewer是最新版本的,是JDK1.8编译并支持JDK1.8的GC 日志文件分析。 GCViewer是业内支持率很高...

    深入学习JAVA GC日志的相关知识

    深入学习JAVA GC日志的相关知识 本资源摘要信息主要介绍了 Java GC 日志的相关知识,包括 JVM 中的垃圾收集、GC 日志的分析、虚拟机参数的解释、jmap 分析等内容。 JVM 中的垃圾收集 Java 虚拟机(JVM)是一个...

    成为JavaGC专家PartII-如何监控Java垃圾回收

    2. **GC日志分析**:分析GC日志是理解其行为的关键。日志包含了每次GC事件的时间、持续时间、内存区域的变化等信息。工具如`MAT (Memory Analyzer Tool)`和`GCPROFILES`可以帮助解析这些日志,找出可能导致性能问题...

    jvmgc日志分析工具

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

    JVM 输出 GC 日志导致 JVM 卡住

    JVM 输出 GC 日志导致 JVM 卡住 JVM 输出 GC 日志导致 JVM 卡住是一个常见的问题,尤其是在高并发和高性能应用中。这个问题的根源在于 JVM 的垃圾回收机制(Garbage Collection,GC),它会在 JVM 运行时周期性地...

    java jstat 查看哪个进程频繁GC垃圾回收

    下面我们将详细探讨如何使用`jstat`工具以及通过配置GC日志来分析和优化Java进程。 `jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,...

    verbosegcanalyzer:Java GC日志汇总报告

    Verbose GC Analyzer是一个生成 CSV 导出和 Java GC 日志汇总报告的工具。 挖掘 Java GC 日志并生成: 总结报告 一个 HTML 报告,其中包含年轻规模、终身规模、提升规模、收集暂停时间和 CPU 挂机时间的图表 CSV ...

    Java 内存区域和GC机制

    - **VisualVM**:集成了JMX,可以监控CPU、内存、线程等,查看GC日志,分析内存泄漏。 - **JConsole**:JDK自带的监控工具,提供GUI界面,可监控JVM的各种指标。 - **JProfiler** 和 **YourKit Java Profiler**:...

    查看WebSphere的javacore日志工具

    为了查看和解析javacore日志,IBM提供了一款名为"Thread"的工具,这通常是指`thread dump`分析工具。它能够帮助我们查看javacore文件中的线程状态,分析哪些线程可能阻塞了其他线程,或者消耗了大量的CPU资源。线程...

    Java VisualVM gc工具

    Java VisualVM的GC插件提供了详细的GC日志分析、GC活动可视化以及内存分配追踪等功能,这对于优化应用性能、解决内存问题非常有帮助。 首先,GC插件能够显示GC活动的时间线,通过图形化界面展示每次垃圾回收的开始...

    jvm 参数及gc详解

    调优主要涉及选择合适的垃圾收集器,调整堆大小和新生代比例,以及设置GC日志,通过监控GC行为来优化性能。 总结,理解并掌握JVM参数和GC机制是Java开发中的重要技能。通过合理配置JVM参数,我们可以有效控制内存...

    08.GC日志1

    Java垃圾收集(Garbage Collection, GC)是Java虚拟机(JVM)自动管理内存的一种机制,它负责识别不再使用的对象并释放它们所占用的内存,从而避免内存泄漏。...对GC日志的深入理解是Java性能调优的关键步骤。

    java应用JVM的GC频率观察方法

    通过对GC日志的分析,我们可以理解哪些操作导致了频繁的Full GC,从而调整堆大小、设置合适的GC策略,或者优化代码以减少不必要的内存消耗。 总的来说,理解并监控Java应用的JVM GC频率是保障系统稳定性、性能和...

Global site tag (gtag.js) - Google Analytics