一个对象在内存中的结构是使用oop表示,主要包含三部分:
- 引入maven依赖
<!-- 计算对象占用内存大小 -->
<dependency>
<groupId>com.carrotsearch</groupId>
<artifactId>java-sizeof</artifactId>
<version>0.0.5</version>
</dependency>
- api如下
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
for (int j = 0 ;j < 1000000; j++){
String good = "zhangsan" + j;
list.add(good);
}
//返回对象本身的大小,不包含引用的对象 B
System.out.println(RamUsageEstimator.shallowSizeOf(list));
//查看大小,返回的是字节 B
System.out.println(RamUsageEstimator.sizeOf(list));
//返回转换后的大小(便于观察)
System.out.println(RamUsageEstimator.humanSizeOf(list));
}
结果如下:
24
76781992
73.2 MB
注: 1M = 1024KB
1KB = 1024B