『』你写的Java对象究竟占多少内存?( 三 )
结果如下:
文章图片
文章图片
我们可以看到TestNotNull的类占用空间是24字节 , 其中头部占用12字节 , 变量a是int类型 , 占用4字节,变量nullObject是引用 , 占用了4字节 , 最后填充了4个字节 , 总共是24个字节 , 与我们之前的预测一致 。但是 , 因为我们实例化了NullObject,这个对象一会存在于内存中 , 所以我们还需要加上这个对象的内存占用16字节 , 那总共就是24bytes+16bytes=40bytes 。我们图中最后的统计打印结果也是40字节 , 所以我们的分析正确 。
这也是如何分析一个对象真正的占用多少内存的思路 , 根据这个思路加上openJDK的jol工具就可以基本的掌握自己写的“对象”究竟败家了你多少内存 。总结
本文我主要讲述了如何分析一个Java对象究竟占用多少内存空间 , 主要总结点如下:
Java对象头部内存模型在32位虚拟机和64位虚拟机是不一样的 , 64位虚拟机又分为开启指针压缩和不开启指针压缩两种对象头模型 , 所以总共有3种对象头模型 。
内存对齐主要是因为平台的原因和性能的原因 , 本文主要解析的是性能方面的原因 。
【『』你写的Java对象究竟占多少内存?】空对象的内存占用计算注意要计算内存对齐 , 非空对象的内存计算注意加上引用内存占用和原实例对象的空间占用 。
推荐阅读
- 软件:看看我写的啥破程序!就值3000?
- 『JavaScript』种草 ES2020 八大新功能
- Java虚拟机:SpringCloud的限流、降级和熔断——Hystrix
- 国产机:iPhone12刘海消失,可能又是国产机模仿的对象!但发布会很晚?
- [函数式]JavaScript面试问题:函数式编程
- @参加Java培训班能达到什么水平以及当前应该注重哪个技术的学习
- ##B站上被下载达5166万次的Python+Java编程视频教程,全套免费领取
- [映维网]苹果最新AR专利可用多设备辅助实现更稳定虚拟对象定位
- 数据挖掘@AI研习丨优秀博士学位论文:面向互联网金融微观对象的数据挖掘
- 『什么值得买』一套适合小白抄写的装机作业
