IT评测·应用市场-qidao123.com技术社区

标题: 面试题解,Java中的“对象”分析 [打印本页]

作者: 反转基因福娃    时间: 2025-1-6 02:31
标题: 面试题解,Java中的“对象”分析
一、说一说JVM中对象的内存布局?new一个对象到底占多大内存?

话不多说,看下图,对象的内存布局图

一个对象的内存布局主要由三部分构成:对象头(Object Header)、实例数据(Instance Data)和对齐添补(Padding)。下面分别介绍这三部分:
对象头(Object Header)

实例数据(Instance Data)

对齐添补(Padding)

而数组类型的对象,尚有4个字节的数组长度字段,所有new一个对象需要的内存巨细为:
8byte(对象头) + 4byte(类型指针) + 实例数据 + 添补字段 + 4byte数组长度(若为数组类型)
二、阐述对象的内存分配计谋

团体计谋如下图所示:

我们来分析一下:
首先判读是否在栈上分配

大对象直接进入老年代

线程本地分配(Thread Local Allocation Buffer, TLAB)

对象优先分配到Eden区

三、new一个对象都有哪些步调?

我们来看对象的创建过程,如下图:

1.类加载检查

2.分配内存

3.内存空间初始化(初始化零值)

4.设置(对象头)

5.对象初始化(实行构造函数)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4