项目拓展-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)
相关推荐
qianshang2334 小时前
SQL注入学习总结
网络·数据库·渗透
what丶k4 小时前
深入解析Redis数据持久化:RBD机制原理、实操与生产最佳实践
数据库·redis·缓存
疯狂的喵5 小时前
C++编译期多态实现
开发语言·c++·算法
2301_765703145 小时前
C++中的协程编程
开发语言·c++·算法
m0_748708055 小时前
实时数据压缩库
开发语言·c++·算法
瀚高PG实验室5 小时前
通过数据库日志获取数据库中的慢SQL
数据库·sql·瀚高数据库
Hgfdsaqwr5 小时前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
invicinble6 小时前
对于Mysql深入理解
数据库·mysql
lly2024066 小时前
jQuery Mobile 表格
开发语言
惊讶的猫6 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言