项目拓展-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)
相关推荐
沪漂阿龙2 分钟前
LangChain 系列:Structured Output结构化输出与源码解析
java·人工智能·架构·langchain
半夜燃烧的香烟6 分钟前
springboot3.0 集成minio上传文件,支持多个桶名
java·开发语言·spring boot
c238566 分钟前
GDB 进程概念详解(下篇)—— 多进程与进阶调试能力
linux·服务器·数据库
不会C语言的男孩7 分钟前
Linux 系统编程 · 第 1 章:Linux 系统概述
c语言·开发语言
码云骑士17 分钟前
05-Python字典底层原理-Hash表与有序性的真相
开发语言·python·哈希算法
J2虾虾17 分钟前
Android支持Java语言的标准
android·java·开发语言
Cloud_Shy61817 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 44 - 47)
开发语言·人工智能·经验分享·笔记·python
mxlwd16820 分钟前
movielen 100k lr模型训练过程
开发语言·python·机器学习