Jol可在开发过程中对数据两极进行评估判断是否可以使用本地缓存
依赖
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.16</version>
</dependency>
测试类
@Test
void test4() {
List<IpBlacklistVO> ipBlacklistVOS = ipBlacklistDao.queryAllIp();
log.info("数据:{}", ipBlacklistVOS);
log.info("单个IpBlacklistVO内存布局:\n{}",
ClassLayout.parseClass(IpBlacklistVO.class).toPrintable());
// 分析整个列表内存占用
log.info("列表总内存占用: {} bytes",
GraphLayout.parseInstance(ipBlacklistVOS).totalSize());
// 可选: 查看详细内存分布
log.info("详细内存分布:\n{}",
GraphLayout.parseInstance(ipBlacklistVOS).toFootprint());
}
输出
单个占用内存
[2025-05-07 12:18:33,260][INFO ][main] 单个IpBlacklistVO内存布局:
net.lab1024.sa.admin.module.phabusiness.ipblacklist.domain.vo.IpBlacklistVO object internals:
OFF SZ TYPE DESCRIPTION VALUE
0 8 (object header: mark) N/A
8 4 (object header: class) N/A
12 4 java.lang.String IpBlacklistVO.ip N/A
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
列表占用内存
[2025-05-07 12:18:33,330][INFO ][main] 列表总内存占用: 267472 bytes (TestDelete.java:89)
内存详细分布
[2025-05-07 12:18:33,398][INFO ][main] 详细内存分布:
java.util.ArrayList@1343b038d footprint:
COUNT AVG SUM DESCRIPTION
3483 32 111456 [B
1 16672 16672 [Ljava.lang.Object;
3483 24 83592 java.lang.String
1 24 24 java.util.ArrayList
3483 16 55728 net.lab1024.sa.admin.module.phabusiness.ipblacklist.domain.vo.IpBlacklistVO
10451 267472 (total)