首页IT科技java面试官如何面试别人(【Java面试】听说Java求职者/面试官都关注了我,这道面试题一个空Object对象的占多大空间?你答的上来吗)

java面试官如何面试别人(【Java面试】听说Java求职者/面试官都关注了我,这道面试题一个空Object对象的占多大空间?你答的上来吗)

时间2025-09-18 17:04:46分类IT科技浏览5585
导读:“一个空Object对象的占多大空间?”...

“一个空Object对象的占多大空间?                ”

一个工作了5年的Java程序员直接被搞蒙了                。

大家好                ,我是Mic                        ,一个工作了14年的Java程序员                        。

我把这个问题的文字版本整理到了15W字的面试文档里        ,大家可以扫描文章尾端领取        。

下面看看高手的回答                。

高手:

在开启了压缩指针的情况下        ,Object默认会占用12个字节                        ,但是为了避免伪共享问题                ,JVM会按照8个字节的倍数进行填充        ,所以会填充4个字节变成16个字节长度                        。

在关闭压缩指针的情况下                        ,Object默认会占用16个字节                ,16个字节正好是8的整数倍,因此不需要填充        。

在HotSpot 虚拟机里面                        ,一个对象在堆内存里面的内存布局是使用OOP结构来表示的                        ,

它主要分为三个部分        。

对象头,包括Markword                、类元指针                        、数组长度其中Markword用来存储对象运行时的相关数据                ,比如hashCode        、gc分代年龄等                        。

在64位操作系统中占8个字节                        ,32位操作系统中占4个字节类元指针指向当前实例对象所属哪个类        ,开启指针压缩的情况下占4个字节                ,未开启则占8个字节数组长度只有对象数组才会存在                        ,占4个字节

实例数据        ,存储对象中的字段信息

对齐填充        ,Java对象的大小需要按照8个字节或者8个字节的倍数对齐                        ,避免伪共享问题                。

因此                ,一个空的对象        ,在开启压缩指针的情况下                        ,占16个字节

其中Markword占8个字节                、类元指针占4个字节                , 对齐填充占4个字节        。

总结

这个问题不仅仅考察JVM基础还考察求职者对于JVM对于对象内存布局的理解程度                        。

对于内存布局这块的理解主要还是帮助我们更好的解决JVM应用上的实际问题

喜欢的朋友记得点赞收藏加关注!!!

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC

-SA 4.0 许可协议                。转载请注明来自 Mic带你学架构!

如果本篇文章对您有帮助                        ,还请帮忙点个关注和赞                        ,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win11镜像下载地址(Win11 Build 22483预览版ISO官方镜像下载) mysql中排序语句([开发笔记]MySQL & Python经验两则)