原文
https://www.it610.com/article/1296207687733813248.htm
工具包
com.carrotsearch.sizeof.RamUsageEstimator
maven依赖
<!-- https://mvnrepository.com/artifact/com.carrotsearch/java-sizeof -->
<dependency>
<groupId>com.carrotsearch</groupId>
<artifactId>java-sizeof</artifactId>
<version>0.0.5</version>
</dependency>
运行结果
list 大小:2000040
t 大小:32
t 大小:2000072
简单的测试代码
import com.carrotsearch.sizeof.RamUsageEstimator;
import java.util.ArrayList;
public class TestMem {
public static void main(String[] args) {//400168
ArrayList<Object> list = new ArrayList<>(100000);
for (int i = 0; i < 100000; i++) {
list.add(new Object());
}
System.out.println("list 大小:"+ RamUsageEstimator.sizeOf(list));
T t = new T();
System.out.println("t 大小:"+ RamUsageEstimator.sizeOf(t));
t.list = list;
System.out.println("t 大小:"+ RamUsageEstimator.sizeOf(t));
}
static class T{
ArrayList<Object> list;
int a = 1;
double b = 1.0;
}
}