本篇文章基于V0.16 JOLSample_25_Compaction
这个例子是用于演示VM是如何紧凑对象的。您可以看到,新分配的对象之间与和列表之间都具有相当稀疏的布局。这是因为在填充列表的时候还产生了许多临时的对象。但是随后GC会把list排列到1个或者几个块当中,试列表中的元素紧凑起来。
运行这个例子最好使用参数
1 | -Xmx1g -XX:+UseParallelGC -XX:ParallelGCThreads=1 |
测试代码
1 | public class JOLSample_25_Compaction { |
运行结果
我们看到第一次之后就把对象都移动到了一起,再往后GC就不再发生变化了