那个小白一直问我GC垃圾回收日志,我一怒之下把这篇文章仍给了他

日志的重要性,不须要过多强调了。经过日志,咱们能够发现程序可能有内存(泄露)问题。本文从案例出发,具体介绍这些日志信息,以期帮助你们更好地了解垃圾回收的运行状况。spa

仍是先上图,看看本文的主要内容:3d

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

咱们先来看个案例,代码以下:日志

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

启动参数设置:blog

XX:+PrintGCDetails内存

运行main方法,输出io

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

关于GC日志的参数class

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

参数案例

 

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

参数解释:垃圾回收

-XX:+PrintGCDetails 启用日志程序

-XX:-UseAdaptiveSizePolicy 禁用动态调整,使SurvivorRatio能够起做用方法

-XX:SurvivorRatio=8设置Eden:Survivior=8:1

-XX:NewSize=10M -XX:MaxNewSize=10M设置整个新生代的大小为10M

写了一个Spring Boot项目,很是简单的项目,里面写了一个controller

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

这段代码实际上是想后面演示OOM用的,都行吧,这里先用他来看看GC垃圾回收日志。

在IDEA中设置

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

输出结果

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

抓出一段来聊聊

 

GC (minor )日志

 

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

(Allocation Failure):代表本次引发GC的缘由是由于在年轻代中没有足够的空间可以存储新的数据了。

PSYoungGen:表示是GC类型

8525KYoungGC前新生代内存占用

352KYoungGC新生代内存占用

9216K:新生代总共大小

98695K:YoungGC前JVM内存占用

98486K:YoungGC后JVM内存使用

130048K:JVM堆总大小

0.0092873 secsYoungGC耗时

user=0.00YoungGC用户耗时

sys=0.00YoungGC系统耗时

real=0.01:YoungGC实际耗时(这里竟然四舍五入了)

 

Full GC 日志

 

看了这篇,我肯定你已经完全搞定GC垃圾回收日志

 

PSYoungGen: 8051K->7817K(9216K):新生代区GC先后和总大小

ParOldGen: 244969K->244969K(245760K):老年代GC先后和大小。

253020K->252786K(254976K):堆GC先后内存占用状况。

Metaspace: 29386K->29386K(1077248K):元空间GC先后和总大小

后面那几项和上面同样

GC垃圾回收日志就是这么简单么~蓝(nan)不蓝(nan)?

相关文章
相关标签/搜索