项目拓展-Jol分析本地对象or缓存的内存占用

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)
相关推荐
林开落L13 分钟前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
AAA修煤气灶刘哥16 分钟前
Java+AI 驱动的体检报告智能解析:从 PDF 提取到数据落地全指南
java·人工智能·后端
小猿姐19 分钟前
KubeBlocks for Milvus 揭秘
数据库·云原生
AI 嗯啦24 分钟前
SQL详细语法教程(四)约束和多表查询
数据库·人工智能·sql
wxy31926 分钟前
嵌入式LINUX——————TCP并发服务器
java·linux·网络
fengfuyao98543 分钟前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
杜子不疼.44 分钟前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
★YUI★1 小时前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
微小的xx1 小时前
java + html 图片点击文字验证码
java·python·html
CHANG_THE_WORLD1 小时前
# C++ 中的 `string_view` 和 `span`:现代安全视图指南
开发语言·c++