美文网首页程序员
简单入门Java对象创建过程

简单入门Java对象创建过程

作者: Trade丿Life | 来源:发表于2020-05-19 20:45 被阅读0次

    Java创建对象的过程

    • image.png

    类加载检查

    • 虚拟机遇到new指令时,会去常量池定位整个类的符号引用,并且检查类是否被加载过,解析和初始化过,如果没有就执行相应的加载过程

    分配内存

    • 分配空间的大小在类加载完成后便可以得知

    • 分配内存有指针碰撞空闲列表两种

    • 通过Java堆是否规整决定使用不同的分配方式

      指针碰撞

      • 适用场景:堆内存规整(没有内存碎片)
      • 原理:将用过的内存全部整合到一边,没用过的整合到另一边,中间一个分界值指针,只需要沿着未用过的空间移动到与对象大小相等的距离
      • GC收集器:Serial,ParNew

      空闲列表

      • 使用场景:堆内存不规整的情况
      • 虚拟机会维护一个列表,该列表中会记录哪些内存块是可用的,在分配的时候,找一块足够大的内存来划分给对象实例
      • GC收集器:CMS

    初始化零值

    • 内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值,保证对象在不赋初值便可以使用

    设置对象头

    • 虚拟机需要对对象进行必要设置,如何才能找到类的元数据信息,对象的哈希码,对象的GC分代信息

    执行init方法

    • 把对象的字段按照自定义的方式进行初始化

    相关文章

      网友评论

        本文标题:简单入门Java对象创建过程

        本文链接:https://www.haomeiwen.com/subject/tqyiohtx.html