美文网首页
深入理解JVM(二)创建对象

深入理解JVM(二)创建对象

作者: 9cc222f2bb0a | 来源:发表于2018-02-28 19:56 被阅读0次

1. 遇到new指令时,检查常量池,检查是否被加载,解析及初始化,没有则执行类加载过程。

2. 类加载检查通过后,分配内存地址,分配方式分为指针碰撞(内存规整,一个接一个)跟空闲列表(维护可用地址),是否规整则根据垃圾回收机制进行确定,标记清除显然属于空闲列表,能进行内存重置的则是指针碰撞

3. 如何解决并发问题?

    方案一:同步处理。通过CAS(内存值,旧值的预期值,要改的值,版本戳)加上失败重试的机制保证原子性。

    方案二:把分配内存的动作根据不同线程划分在预分配的空间中进行,分配空间用完之后,进行同步锁定,这块内存被称为TLAB(Thread Local Allocation Buffer 本地线程分配缓存),虚拟机是否使用,采用-XX:+/-UseTLAB 指定

4. 分配内存空间之后,将分配到的内存空间初始化零值,如果是TLAB模式,可以在预分配的时候初始化,这个步骤的目的是保证对象可以不赋值即可使用,程序访问到零值

5. 设置对象基本信息。将对象是那个类的实例,如何找到元信息,对象的哈希码,对象的GC分代年龄信息等放置到对象的头部信息(Object Header)中,对象头后面会进一步阐述。

6. 虚拟机的创建完成,程序进行对象初始化并赋值。

相关文章

  • JVM读书笔记

    深入理解JVM(1) : Java内存区域划分 深入理解JVM(2) : Java堆中对象创建、布局、访问全过程 ...

  • 深入理解JVM(二)创建对象

    1. 遇到new指令时,检查常量池,检查是否被加载,解析及初始化,没有则执行类加载过程。 2. 类加载检查通过后,...

  • 深入理解JVM——对象

    对象的创建 虚拟机遇到一条new指令时,首先检查指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引...

  • 深入理解JVM——对象

    对象的创建 虚拟机遇到一条new指令时,首先检查指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引...

  • 分布式Java读书笔记二:JVM

    第3章 深入理解JVM 深入理解JVM JVM标准结构 JVM负责装载class文件并执行,因此,首先要掌握的是J...

  • JVM对象引用与内存分配策略

    我的CSDN博客同步发布:JVM对象引用与内存分配策略 前两天对《深入理解虚拟机》一书做了个总结:《JVM理解其实...

  • JVM深入理解(二)

    JVM相关知识详解 一、Java虚拟机指令集 Java虚拟机指令由一个字节长度的、代表某种特定含义的操作码(Opc...

  • 深入理解JVM(二)

    GC详解 GC的作用域 GC的作用域如下图所示。 关于垃圾回收,只需要记住 ,即不同的区域使用不同的算法。 不同区...

  • JVM对象创建过程-备忘录

    JVM创建对象实例流程

  • 4.JVM体系-对象的创建

    一、JVM体系-对象的创建 问题:JVM在方法的调用过程中,是怎样创建对象的? 1.对象在堆中如何创建: 3.1 ...

网友评论

      本文标题:深入理解JVM(二)创建对象

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