日常记录——JVM—PS+PO的GC日志分析

一、代码

public class GCtest {
    public static void main(String[] args) {
        List<byte[]> byteList = new ArrayList<>();
        for (;;){
            byte[] bytes = new byte[1024];
            byteList.add(bytes);
        }
    }
}

二、配置

-Xmn5M //年轻代
-Xms10M //堆最小
-Xmx10M //堆最大
-XX:+UseParallelOldGC //使用ps+po
-Xloggc:D:\gclog\xxx-xxx-gc-%t.log //GC日志输出文件
-XX:+UseGCLogFileRotation //循环使用日志
-XX:NumberOfGCLogFiles=2 //日志数量
-XX:GCLogFileSize=20K //日志文件大小
-XX:+PrintGCDetails //打印GC详细信息
-XX:+PrintGCDateStamps //打印GC详细信息时间
-XX:+PrintGCCause //打印GC原因

三、日志

1.年轻代GC
2020-07-26T23:31:31.843+0800: 0.082: [GC (Allocation Failure) --[PSYoungGen: 3681K->3681K(4608K)] 5941K->8093K(9728K), 0.0009832 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
时间戳 GC原因(分配失败)–【 年轻代 GC:GC前新生代占内存3681K->GC后新生代占内存3681K(新生代总内存4608K)GC前堆内存占用5941K->GC后堆内存占用8093K(堆总大小9728K),GC耗时0.0009832 secs】【时间:GC用户耗时,系统耗时,实际耗时】
2.年老代GC
2020-07-27T00:37:07.359+0800: 0.088: [Full GC (Ergonomics) [PSYoungGen: 4096K->2518K(4608K)] [ParOldGen: 3165K->4640K(5120K)] 7261K->7158K(9728K), [Metaspace: 3144K->3144K(1056768K)], 0.0052679 secs] [Times: user=0.16 sys=0.00, real=0.01 secs]
时间戳 Full GC 原因(自动的调解gc暂停时间和吞吐量之间的平衡)–【 年轻代 GC:GC前新生代占内存4096K->GC后新生代占内存2518K(新生代总内存4608K)】【 年老代 GC:GC前年老代占内存3165K->GC后年老代占内存4640K(年老代总内存5120K)】GC前堆内存占用7261K->GC后堆内存占用7158K(堆总大小9728K)【Metaspace(方法区)fullGC前3144K->fullGC后3144K(Metaspace共1056768K)】GC耗时0.0052679 secs【时间:GC用户耗时0.16,系统耗时0,实际耗时0.01】

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页