导入Maven依赖
<dependency>
<groupId>com.carrotsearch</groupId>
<artifactId>java-sizeof</artifactId>
<version>0.0.5</version>
</dependency>
调用类 RamUsageEstimator 的 sizeOf 方法
int[] arr = {1, 2, 3};
long size = RamUsageEstimator.sizeOf(arr);
System.out.println(size);
返回long型的byte大小。 该类中,除了 sizeOf 方法,还有 shallowSizeOf(Object) 方法,该大小是变量所有属性的大小,如果是引用变量的话,不包括引用变量指向的变量在堆内存的大小,仅仅计算引用变量本身的byte。 举个例子
int[] arr = {1, 2, 3};
long size = RamUsageEstimator.sizeOf(arr);
System.out.println(size);
System.out.println(RamUsageEstimator.shallowSizeOf(arr));
System.out.println(RamUsageEstimator.sizeOf("中"));
String[] arr2 = {"中", "国"};
System.out.println(RamUsageEstimator.sizeOf(arr2));
System.out.println(RamUsageEstimator.shallowSizeOf(arr2));
对于int[]数组2个方法结果一致,因为int是基本数据类型没有引用。 对于String[]数组,保存的只是引用的常量池中的地址,所以 shallowSizeOf() 得到结果小。
|