介绍
JOL(Java Object Layout)是openjdk的一个工具,可以分析对象在Java虚拟机中的内存布局。
JOL官网:https://github.com/openjdk/jol/
用maven安装jol
例如,我要安装0.17版本,将如下片段插入maven工程的pom.xml文件中的dependencies内:
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.17</version>
<scope>provided</scope>
</dependency>
使用示例
查看当前Java虚拟机的细节信息
package com.thb.hellomaven;
import org.openjdk.jol.vm.VM;
public class Test {
public static void main(String[] args) {
System.out.println(VM.current().details());
}
}
输出:
查看一个对象在Java虚拟机中的内存占用情况
package com.thb.hellomaven;
import java.math.BigInteger;
import org.openjdk.jol.info.ClassLayout;
public class Test {
public static void main(String[] args) {
byte[] val = new byte[] {0x10};
BigInteger bi = new BigInteger(val);
System.out.println(ClassLayout.parseInstance(bi).toPrintable());
}
}
输出:
查看一个类在Java虚拟机中的内存占用情况
package com.thb.hellomaven;
import org.openjdk.jol.info.ClassLayout;
public class Test {
public static void main(String[] args) {
System.out.println(ClassLayout.parseClass(MyClass.class).toPrintable());
}
public static class MyClass {
String str = "hello jol";
}
}
输出: