一些常见的JVM垃圾回收日志分析工具包括:
本文主要讲解GC Easy 可视化工具的使用
输出参数 | 描述 |
---|---|
-XX:+PrintGC | 当垃圾回收时,打印出每次GC的详细信息。 |
-XX:+PrintGCDetails | 在打印GC信息的基础上,还会打印详细的堆栈信息。 |
-XX:+PrintGCTimeStamps | 在打印GC信息的基础上,还会打印每次GC的时间戳。 |
-XX:+PrintHeapAtGC | 当垃圾回收时,打印堆的详细信息。 |
-XX:+PrintTenuringDistribution | 在打印GC信息的基础上,还会打印关于对象年龄分布的信息。 |
-XX:+PrintGCCause | 在打印GC信息的基础上,还会打印引起GC的原因。 |
-XX:+PrintGCDateStamps | 在打印GC信息的基础上,还会打印每次GC的日期时间戳。 |
-XX:+PrintGCApplicationStoppedTime | 在应用程序停止时,打印GC信息。 |
-XX:+PrintGCApplicationConcurrentTime | 在应用程序运行时,打印GC信息。 |
-XX:+TraceClassLoading | 打印类加载的详细信息。 |
-XX:+TraceClassUnloading | 打印类卸载的详细信息。 |
-XX:+PrintStringTableStatistics | 打印字符串常量池的详细信息。 |
-XX:+PrintAdaptiveSizePolicy | 打印自适应分配策略的相关信息。 |
-XX:+PrintCompilation | 当JIT编译器编译代码时,打印编译的详细信息。 |
-XX:+PrintInlining | 打印方法内联相关的详细信息。 |
-XX:PrintGCApplicationConcurrentTime | 在应用程序运行时,打印GC信息。 |
-Xloggc: | 将GC日志记录到文件中。 |
参数使用测试
-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx256m -XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -
Xloggc:F://test//gc.log
运行后就可以在F盘下生成gc.log文件
Java HotSpot(TM) 64-Bit Server VM (25.144-b01) for windows-amd64 JRE (1.8.0_144-b01),
built on Jul 21 2017 21:57:33 by "java_re" with MS VC++ 10.0 (VS2010)
Memory: 4k page, physical 12582392k(1939600k free), swap 17300984k(5567740k free)
CommandLine flags: -XX:InitialHeapSize=201318272 -XX:MaxGCPauseMillis=100 -
XX:MaxHeapSize=268435456 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+UseCompressedClassPointers -
XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation
{Heap before GC invocations=0 (full 0):
garbage-first heap total 196608K, used 9216K [0x00000000f0000000,
0x00000000f0100600, 0x0000000100000000)
region size 1024K, 9 young (9216K), 0 survivors (0K)
Metaspace used 3491K, capacity 4500K, committed 4864K, reserved 1056768K
class space used 381K, capacity 388K, committed 512K, reserved 1048576K
2018-09-24T23:06:02.230+0800: 0.379: [GC pause (G1 Evacuation Pause) (young), 0.0031038
secs]
[Parallel Time: 2.8 ms, GC Workers: 3]
[GC Worker Start (ms): Min: 378.6, Avg: 378.8, Max: 379.0, Diff: 0.3]
[Ext Root Scanning (ms): Min: 0.0, Avg: 0.4, Max: 0.8, Diff: 0.8, Sum: 1.3]
[Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Processed Buffers: Min: 0, Avg: 0.0, Max: 0, Diff: 0, Sum: 0]
[Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.1]
[Object Copy (ms): Min: 1.8, Avg: 1.9, Max: 1.9, Diff: 0.1, Sum: 5.6]
[Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Termination Attempts: Min: 1, Avg: 1.0, Max: 1, Diff: 0, Sum: 3]
[GC Worker Other (ms): Min: 0.0, Avg: 0.2, Max: 0.6, Diff: 0.6, Sum: 0.6]
[GC Worker Total (ms): Min: 2.4, Avg: 2.5, Max: 2.7, Diff: 0.3, Sum: 7.6]
[GC Worker End (ms): Min: 381.4, Avg: 381.4, Max: 381.4, Diff: 0.0]
[Code Root Fixup: 0.0 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.0 ms]
[Other: 0.2 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 0.1 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 0.0 ms]
[Humongous Register: 0.0 ms]
[Humongous Reclaim: 0.0 ms]
[Free CSet: 0.0 ms]
[Eden: 9216.0K(9216.0K)->0.0B(7168.0K) Survivors: 0.0B->2048.0K Heap:
9216.0K(192.0M)->1888.0K(192.0M)]
Heap after GC invocations=1 (full 0):
garbage-first heap total 196608K, used 1888K [0x00000000f0000000,
0x00000000f0100600, 0x0000000100000000)
region size 1024K, 2 young (2048K), 2 survivors (2048K)
Metaspace used 3491K, capacity 4500K, committed 4864K, reserved 1056768K
class space used 381K, capacity 388K, committed 512K, reserved 1048576K
}
[Times: user=0.00 sys=0.00, real=0.00 secs]
{Heap before GC invocations=1 (full 0):
garbage-first heap total 196608K, used 9056K [0x00000000f0000000,
0x00000000f0100600, 0x0000000100000000)
region size 1024K, 9 young (9216K), 2 survivors (2048K)
Metaspace used 3492K, capacity 4500K, committed 4864K, reserved 1056768K
class space used 381K, capacity 388K, committed 512K, reserved 1048576K
2018-09-24T23:06:02.310+0800: 0.458: [GC pause (G1 Evacuation Pause) (young), 0.0070126
secs]
。。。。。。。。。。。。。。。。。。。
GC Easy是一款Java GC日志分析和可视化工具,可以帮助开发人员分析GC日志,找出GC瓶颈,并提出优化建议。
主要功能包括:
GC Easy网站:http://gceasy.io/
上传后,点击“Analyze”按钮,即可查看报告。
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。