通过 JFR 与日志深入探索 JVM - TLAB JFR 相关事件与日志详解
作者:互联网
全系列目录:通过 JFR 与日志深入探索 JVM - 总览篇
上一篇我们详细的分析了 TLAB 的原理以及生命周期,并且提出 JFR 相关的两个事件:在线程分配对象时,如果 TLAB 不够,则根据最大允许浪费空间,决定是回收当前 TLAB 还是重新获取一个 TLAB 进行分配还是直接在堆上分配。jdk.ObjectAllocationOutsideTLAB
代表直接在堆上分配,jdk.ObjectAllocationInNewTLAB
代表回收+重新获取 TLAB 进行分配。
我们也提到了,jdk.ObjectAllocationOutsideTLAB
是我们需要关心的,jdk.ObjectAllocationInNewTLAB
是我们不太需要关心,但是可以通过这个事件学习 TLAB 原理的。在详细说明这两种 JFR 事件之前,我们先来看看 TLAB 涉及到的各种 JVM 日志。
TLAB 相关 JVM 日志
先按照之前的章节,准备好 Java WhiteBox API。之后,编写测试代码:
//对于字节数组对象头占用16字节
private static final int BYTE_ARRAY_OVERHEAD = 16;
//我们要测试的对象大小是100kb
private static final int OBJECT_SIZE = 100 * 1024;
//需要使用静态field,而不是方法内本地变量,否则编译后循环内的new byte[]全部会被省略
标签:jdk,TLAB,JVM,JFR,日志,分配 来源: https://blog.csdn.net/zhxdick/article/details/112298125