基于apache的lucene-core的org.apache.lucene.util.RamUsageEstimator计算对象内存占用大小、对象堆空间的大小及对象及其引用树上的所有对象的综合大小,代码示例如下
import org.apache.lucene.util.RamUsageEstimator;@b@import java.util.ArrayList;@b@import java.util.List;@b@public class SizeUtil {@b@@b@ public static void main(String[] args) {@b@@b@ List<OrderInfo> list = new ArrayList<OrderInfo>();@b@ for(int i=0;i<10000;i++){@b@ OrderInfo orderDTO =new OrderInfo();@b@ orderDTO.setApplyNo("2208300002"+i);@b@ orderDTO.setContractNo("220007798");@b@ orderDTO.setCustId("ssss77021306368762");@b@ orderDTO.setDealerNo("000050");@b@ orderDTO.setActStatus("pass");@b@ orderDTO.setActType("0");@b@ list.add(orderDTO);@b@ }@b@ //计算指定对象及其引用树上的所有对象的综合大小,返回可读的结果,如:2KB@b@ System.out.println("humanSizeOf:"+ RamUsageEstimator.humanSizeOf(list));@b@ //计算指定对象本身在堆空间的大小,单位字节@b@ System.out.println("shallowSizeOf:"+RamUsageEstimator.shallowSizeOf(list));@b@ //计算指定对象及其引用树上的所有对象的综合大小,单位字节@b@ System.out.println("sizeOf:"+RamUsageEstimator.sizeOf(list));@b@@b@@b@@b@ }@b@@b@}
添加依赖pom配置
<dependency>@b@ <groupId>org.apache.lucene</groupId>@b@ <artifactId>lucene-core</artifactId>@b@ <version>4.0.0</version>@b@</dependency>
控制台运行结果
humanSizeOf:1.5 MB@b@shallowSizeOf:24@b@sizeOf:1575752