java对象所占内存大小输出 如何计算java对象所占内存大小可以使用下述三种方法。使用jdk8自带API使用下面语句打印对象所占内存大小需要保证jdk版本是jdk8。System.out.println(ObjectSizeCalculator.getObjectSize(3L));借助org.apache.lucene工具类引入maven坐标dependency groupIdorg.apache.lucene/groupId artifactIdlucene-core/artifactId version4.0.0/version /dependency dependency groupIdorg.apache.commons/groupId artifactIdcommons-lang3/artifactId version3.12.0/version /dependency// 使用jdk8自带API System.out.println(List内存占用大小 ObjectSizeCalculator.getObjectSize(map)字节); System.out.println(List占用的内存大小为 new BigDecimal(ObjectSizeCalculator.getObjectSize(map)).divide(new BigDecimal(1024*1024)) MB);借助jol工具类引入maven坐标dependency groupIdorg.openjdk.jol/groupId artifactIdjol-core/artifactId version0.9/version /dependencySystem.out.println(ClassLayout.parseInstance(map).toPrintable());不过这种当对象中内嵌其他对象时只能计算ClassLayout方法中这个object对象所占内存的大小。完整代码如下import lombok.Data; import java.io.Serializable; /** * author Evan Walker * version 1.0 * desc * date 2024/02/20 09:38:43 */ Data public class ClassEntity implements Serializable { private String acctId; private String classTag1; private String classTag2; private String classTag3; }import jdk.nashorn.internal.ir.debug.ObjectSizeCalculator; import org.apache.lucene.util.RamUsageEstimator; import org.openjdk.jol.info.ClassLayout; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; /** * author Evan Walker * version 1.0 * desc * date 2024/02/20 09:37:48 */ public class Test { public static void main(String[] args) throws Exception{ MapString,ClassEntity map new HashMap(); for(int i 0;i1000000;i){ ClassEntity entity new ClassEntity(); entity.setClassTag1(A); entity.setClassTag2(ibbb); entity.setClassTag3(iccc); map.put(i12345678,entity); } // 借助org.apache.lucene工具类 System.out.println(List内存占用大小 RamUsageEstimator.humanSizeOf(map)); // 使用jdk8自带API System.out.println(List内存占用大小 ObjectSizeCalculator.getObjectSize(map)字节); System.out.println(List占用的内存大小为 new BigDecimal(ObjectSizeCalculator.getObjectSize(map)).divide(new BigDecimal(1024*1024)) MB); // 借助jol工具类 System.out.println(ClassLayout.parseInstance(map).toPrintable()); } }上述便是三种打印java 对象占用内存的方法。

相关新闻

最新新闻

GHelper 上手指南:一个免费轻量工具管好华硕笔记本的风扇曲线、独显直连与功耗

GHelper 上手指南:一个免费轻量工具管好华硕笔记本的风扇曲线、独显直连与功耗

GHelper 上手指南:一个免费轻量工具管好华硕笔记本的风扇曲线、独显直连与功耗 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt…

2026/8/22 19:55:06
模型预测控制(MPC)建模实战:从离散/连续到线性/非线性模型详解

模型预测控制(MPC)建模实战:从离散/连续到线性/非线性模型详解

1. 项目概述:从“预测”到“控制”的桥梁在工业自动化、机器人控制乃至自动驾驶领域,我们常常面临一个核心挑战:如何让一个系统不仅对当前状态做出反应,还能“预见”未来几步,并据此做出最优决策?这就是模型…

2026/8/22 19:55:06
从GPT到ChatGPT:指令微调与RLHF如何让AI理解人类意图

从GPT到ChatGPT:指令微调与RLHF如何让AI理解人类意图

1. 从“玩具”到“现象”:ChatGPT的进化之路如果你在2022年底之前问我,什么是GPT,我可能会告诉你,它是一个挺有意思的文本生成模型,能写点诗、编个故事,偶尔也能回答些问题,但时不时会“一本正经…

2026/8/22 19:55:06
ShawzinBot MIDI转按键教程:把游戏里的演奏交给自动化

ShawzinBot MIDI转按键教程:把游戏里的演奏交给自动化

ShawzinBot MIDI转按键教程:把游戏里的演奏交给自动化 【免费下载链接】ShawzinBot Convert a MIDI input to a series of key presses for the Shawzin 项目地址: https://gitcode.com/gh_mirrors/sh/ShawzinBot ShawzinBot 是一款 MIDI转按键 工具&#xf…

2026/8/22 19:55:06
GetQzonehistory:十分钟完成一次免费的QQ空间备份与说说导出

GetQzonehistory:十分钟完成一次免费的QQ空间备份与说说导出

GetQzonehistory:十分钟完成一次免费的QQ空间备份与说说导出 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 十年前在空间发过的照片,链接今天多半已是死链。趁Q…

2026/8/22 19:55:06
显示器接口全解析:从VGA到DP/HDMI,实战选型与故障排查指南

显示器接口全解析:从VGA到DP/HDMI,实战选型与故障排查指南

1. 从VGA到DP:显示器接口的演进与实战选型刚入行那会儿,给客户装机最头疼的就是显示器接口对不上。客户抱着一台老显示器,主机是新配的,看着那一堆形状各异的接口,新手往往一头雾水。VGA、DVI、HDMI、DP,还…

2026/8/22 19:50:06