其他分享
首页 > 其他分享> > 通过 JFR 与日志深入探索 JVM - TLAB JFR 相关事件与日志详解

通过 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