java 对象的创建(new 对象的创建)

内存管理 和TLAB请阅 https://blog.csdn.net/weixin_41842550/article/details/103325281

对象创建过程:new  ---> 检查符号引用和类是否被加载--->分配内存--->对象设置信息--->init--->对象产生。

1. 常量池:用于存储编译器生成的各种字面量和符号引用。这部分内容在类加载后进入常量池

2.虚拟机遇到new指令时,首先检查指令的参数是否能在常量池中定位到一个类的的符号引用。并且检查该符号引用代表的类是否被加载

        如果没加载,则执行类加载过程。

        如果已经加载,则为该对象分配内存。对象所需内存在类加载后便可以完全确认。

3.分配方式:依赖于java堆是否规整。是否规整依赖于垃圾收集器。(垃圾收集器是否有压缩整理功能)

        指针碰撞:java堆规整,空闲内存放一边,已用的放一边。指针作为分界点的指示器。

        空闲列表:java堆不规整,空闲,已用内存相互交错。需要维护一张列表记录内存的情况。

4.创建对象频繁,并发情况下分配内存不安全。需要采取同步机制。

           对分配动作进行同步。

           使用用TLAB时,线程程分配TLAB时同步。

5.对对象设置信息,对象头信息:属于哪个类的实例,hash值,GC分代年龄等。

6.信息设置完,执行<init>,初始化对象。对象产生。

 

《深入理解java虚拟机》 (第二版)   学习之路

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值