gc日志相关参数

转载自:http://blog.youkuaiyun.com/wisgood/article/details/72485708

1.-verbose:gc
这个参数会输出虚拟机中GC的情况.使用后输出如下:

[Full GC 168K->97K(1984K), 0.0253873 secs] 

箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有168K-97K=71K的对象容量被回收,括号内的数据1984K为堆内存的总容量,收集所需要的时间是0.0253873秒。

2.-XX:+PrintGC
功能同-verbose:gc,可以认为-verbose:gc 是 -XX:+PrintGC的别名。
另外,前者是稳定版本,后者是非稳定版本,可能在未通知的情况下删除,且被标记为manageable(意味着这些参数可以在程序运行期间动态调整。),可以通过如下三种方式修改。

com.sun.management.HotSpotDiagnosticMXBean API
JConsole
jinfo -flag

参见:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

3.-XX:+PrintGCDetails

[GC [PSYoungGen: 1048640K->174693K(1223360K)] 1048640K->218587K(4019584K), 0.0918800 secs] [Times: user=1.13 sys=0.17, real=0.09 secs] 

可以认为是-XX:+PrintGC的更详细版本,且更详细,包含以内内容:

1)会打印具体垃圾回收算法,如PSYoungGen。打印内容与具体垃圾回收算法有关。
2)会打印额外的垃圾回收时间。如[Times: user=1.13 sys=0.17, real=0.09 secs] 。详细日志的“Times”部分包含了GC所使用的CPU时间信息,分别为操作系统的用户空间和系统空间所使用的时间。同时,它显示了GC运行的“真实”时间(0.09秒是0.0929090秒的近似值)。
如果CPU时间(译者注:1.13秒+0.17,秒)明显多于”真实“时间(译者注:0.09秒),我们可以得出结论:GC使用了多线程运行。这样的话CPU时间就是所有GC线程所花费的CPU时间的总和。

推荐上面3个参数使用-XX:+PrintGCDetails

4.-XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps
例子:

2017-05-18T18:34:04.568+0800: 20.309: 
[GC [PSYoungGen: 1048640K->174716K(1223360K)] 1048640K->218591K(4019584K), 0.0940440 secs] [Times: user=1.29 sys=0.16, real=0.09 secs]

使用-XX:+PrintGCDateStamps可以将时间和日期也加到GC日志中。如上个例子中的2017-05-18T18:34:04.568+0800
使用-XX:+PrintGCTimeStamps表示自JVM启动至今的时间戳会被添加到每一行中,如上个例子中的20.309
推荐这两个参数同时使用。

5.-Xloggc
输出gc log日志到固定目录的文件下。如-Xloggc:/search/gc.log

6.-XX:+PrintGCApplicationStoppedTime
打印垃圾回收期间程序暂停的时间.如:
Total time for which application threads were stopped: 0.0730640 seconds

7.-XX:+PrintHeapAtGC
在进行GC的前后打印出堆的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值