基于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