使用RamUsageEstimator计算对象占用堆内存大小

1. pom依赖

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>8.3.0</version>
</dependency>

2. 计算内存大小,返回MB

private int getMb(Object obj) {

    if (obj == null) {
        return 0;
    }
    //计算指定对象本身在堆空间的大小,单位字节
    long byteCount = RamUsageEstimator.shallowSizeOf(obj);
    if (byteCount == 0) {
        return 0;
    }
    double oneMb = 1 * 1024 * 1024;

    if (byteCount < oneMb) {
        return 1;
    }

    Double v = Double.valueOf(byteCount) / oneMb;
    return v.intValue();
}

 


版权声明:本文为zyf_balance原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。