面试题:JVM(四)

new对象流程?(龙湖地产)

对象创建方法,对象的内存分配。(360安全)

1. 对象实例化

创建对象的方式有几种?

创建对象的步骤

指针碰撞:以指针为分界线,一边是已连续使用的内存空间,一边是完全没有使用的内存空间,此时开辟新的堆区空间为对象分配内存只需将指针移动即可

空闲列表:已使用的空间并不连续,列表会记录这些不连续但未使用的内存地址,但有需要就直接将列表所指向的一块空间分配给对象,并将该空间的地址移除列表

2. 对象内存布局

Java对象头里有什么 (蚂蚁金服)

对象头信息里面有哪些东西? (美团)

对象在JVM中是怎么存储的

2.1 对象头

对象头:它主要包括两部分。

  • 一个是对象自身的运行时元数据(mark word)。
  1. 哈希值(hashcode):对象在堆空间中都有一个首地址值,栈空间的引用根据这个地址指向堆中的对象,这就是哈希值起的作用
  2. GC分代年龄:对象首先是在Eden中创建的,在经过多次GC后,如果没有被进行回收,就会在survivor中来回移动,其对应的年龄计数器会发生变化,达到阈值后会进入养老区
  3. 锁状态标志,在同步中判断该对象是否是锁
  4. 线程持有的锁
  5. 线程偏向ID
  6. 偏向时间戳
  • 另一个是类型指针,指向元数据区的类元数据InstanceKlass,确定该对象所属的类型
  • 此外,如果对象是一个数组,对象头中还必须有一块用于记录数组的长度的数据。

因为正常对象元数据就知道对象的确切大小。所以数组必须得知道长度。

相关推荐
u***1372 分钟前
【SpringBoot】【log】 自定义logback日志配置
java·spring boot·logback
小坏讲微服务18 分钟前
Spring Cloud Alibaba整合SkyWalking的监控完整使用
java·微服务·架构·springcloud·监控·skywalking·java微服务
chxii28 分钟前
第六章:MySQL DQL 表之间的关系 自连接 一对一、一对多、多对一、多对多
java·前端·mysql
煎蛋学姐1 小时前
SSM基于J2EE的山西旅游网站的设计与实现iiqmx(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·java-ee·ssm 框架·山西旅游网站·在线预订系统
百***61871 小时前
Spring的构造注入
android·java·spring
小白宗轩1 小时前
vsCode的java配置
java·vscode·python
桦说编程1 小时前
如果让我从头再来学习并发编程
java·设计模式·性能优化
414丶小哥1 小时前
Jetbrains系列工具 Idea Websotrm中使用Claude Code
java·ide·intellij-idea·claudecode
zhouyunjian2 小时前
syncronized使用与深入研究
java·开发语言
chxii2 小时前
在 VS Code 中用 MyBatis 操作数据库的 Spring Boot 示例
java