JVM深入学习(二十四)-GC日志

垃圾回收的时候可以输出垃圾回收的详细信息,帮助我们分析垃圾回收的具体内容,了解一下gc日志的相关内容

1. 输出GC日志的相关参数

1.1 输出GC过程日志

-XX:+PringGC

输出格式
image.png

[GC (Allocation Failure)  2073K->784K(98304K), 0.0006580 secs]

GC: gc的类型 GC表示新生代gc FullGC表示新生代/老年代/方法去
Allocation Failure: 出现gc操作的原因,比如这个原因就是分配失败,就是分配内存的时候空间不足,就触发了GC
2073K->784K(98304K) 第一个是当前的内存,> 后的是回收后的内存大小 ()里的是需要的内存大小,即为了存放对象需要多少内存.

可以看到我们为了存放98304K大小的对象,进行了好几次GC,都没办法满足(我设置了最大堆内存),最终就会出现Java heap space
image.png

1.2 输出GC详细信息,包含堆内存空间信息

-XX:+PrintGCDetails

image.png
可以看到比上面的gc日志又增加了堆内存的详细信息
image.png

其中垃圾回收日志也增加了部分输出

[GC (Allocation Failure) [PSYoungGen: 2073K->744K(29696K)] 2073K->752K(98304K), 0.0005600 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

PSYoungGen: 代表着新生代回收 PS是垃圾回收器 Parallel Scavenge的缩写

Heap
 PSYoungGen      total 29696K, used 1280K [0x00000000fdf00000, 0x0000000100000000, 0x0000000100000000)
  eden space 25600K, 5% used [0x00000000fdf00000,0x00000000fe0401a8,0x00000000ff800000)
  from space 4096K, 0% used [0x00000000ff800000,0x00000000ff800000,0x00000000ffc00000)
  to   space 4096K, 0% used [0x00000000ffc00000,0x00000000ffc00000,0x0000000100000000)
 ParOldGen       total 68608K, used 567K [0x00000000f9c00000, 0x00000000fdf00000, 0x00000000fdf00000)
  object space 68608K, 0% used [0x00000000f9c00000,0x00000000f9c8dda8,0x00000000fdf00000)
 Metaspace       used 3165K, capacity 4496K, committed 4864K, reserved 1056768K
  class space    used 345K, capacity 388K, committed 512K, reserved 1048576K

这个堆内存的信息主要就是展示新生代/老年代/永久代(jdk1.8元空间)的总大小/使用率的情况

1.3 输出GC的耗时和时间信息

# 打印GC耗时
-XX:+PrintGCTimeStamps
# 打印GC发生的时间
-XX:+PrintGCDateStamps

这两个参数要配合上面的输出GC日志使用,单独使用没有效果,很好理解,没有输出gc日志,怎么打印gc的耗时?

例子:
image.png
输出:
image.png
可以看到增加了gc发生的时间和gc的耗时.

1.4 在GC前后打印堆的信息

-XX:+PrintHeapAtGC

可以看到有具体的详细信息:
image.png

2. 图示说明gc日志信息

2.2 YoungGC

image.png

2.3 FullGC

image.png

3. 工具分析GC日志

首先需要存储gc日志,参数如下:

-Xloggc:[路径]
#例:
-Xloggc:./gclogs/gc.log

使用的工具有多种:
GCViewer,GCEasy,GCHisto,GCLogViewer,Hpjmeter,garbagecat等.

3.1 GCViewer

GCViewer下载地址: https://github.com/chewiebug/GCViewer/releases
GCViewer下载后的jar包,直接点击运行接口
image.png
导入gc日志文件后可以看到:
image.png

3.2 GCEasy

GCEasy在线地址: https://gceasy.io/
选择文件
image.png
可以看到具体的信息
image.png

3.3 总结

工具的作用是帮助我们分析日志,要知道在生产环境很长时间才会出现一次FullGC,认为排查比较困难,这个时候就需要依赖工具了.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhang.yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值