我是靠谱客的博主 健壮银耳汤,最近开发中收集的这篇文章主要介绍GC日志分析输出日志日志内容分析参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

输出日志

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/gc.log

日志回滚

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=512k

-XX:UseGCLogFileRotation
开启日志回滚功能,-Xlogcs得设置,它才有效

-XX:NumberOfGCLogFiles
设置回滚日志的数量,必须大于0,格式:.0, .1, …, .n-1.

-XX:GCLogFileSize
每个日志文件的大小,最小为8k

-XX:+PrintGCDetails
输出GC日志

-XX:+PrintGCDateStamps
输出gc开始时的时间戳

日志内容分析

(这个还用Perm,应该是jdk8以前的,文章是否得补充各jdk各垃圾回收器的日志?)

2021-01-20T08:08:08.888-0800: 88.808: 
[ 
  Full GC [PSYoungGen: 1024K->100K(2048K)] 
  [PSOldGen: 1024k->1100K(2048K)] 
  2048->1200K(4096K) 
  [PSPermGen: 1024K->512K(2048K)], 
  3.4 secs
]
[Times: user=3.2 sys=0.2, real=3.4 secs]

2021-01-20T08:08:08.888-0800: 88.808 : 开始GC的时间;

Full GC: 垃圾回收类型

[PSYoungGen: 1024K->100K(2048K)] : 在年轻代GC后,年轻代内存使用从1M减少到100K,年轻代的总大小是2M。

[PSOldGen: 1024K->1100K(2048K)] : 在老年代GC后,老年代的内存使用从1M到1100K,在这个例子中为什么不减,反而增加了呢?因为年轻代对象到一定年龄后,会移到老年代,不一定都是这种情况的。老年代的总内存是2M。

2048K->1200K(4096K) : 在GC后,使用的内存从2M减少到1200K,分配的最大内存是4M。

[PSPermGen: 1024K->512K(2048K)] : 在GC之后,元数据区内存使用从1M降到512K,总的元数据大小是2M。

3.4 secs GC使用时间3.4秒。
[Times: user=3.2 sys=0.2, real=3.4 secs] 她所有 经过的时间,包括其它进程使用时间片以及进程阻塞的时间(如等待I/O完成)。
User: 用户是进程中用户模式代码(内核外部)所花费的CPU时间量。 这只是执行过程中使用的实际CPU时间。 其他流程以及该流程花费的时间被阻止,不计入该数字。
Sys: 是进程中在内核中花费的CPU时间量。 这意味着在内核内部执行系统调用所花费的CPU时间,而不是库代码仍在用户空间中运行。 像用户一样,这只是进程使用的CPU时间。 (对于这两段文字,我还是不能够完全得理解,应该是因为对CPU底层的逻辑还不了解)

参考

Understanding the Java Garbage Collection Log
Understanding Java Garbage Collection Logging: What Are GC Logs and How To Analyze Them

最后

以上就是健壮银耳汤为你收集整理的GC日志分析输出日志日志内容分析参考的全部内容,希望文章能够帮你解决GC日志分析输出日志日志内容分析参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部