JVM中对象如何完成空间分配和初始化工作

上一篇 <<<自定义SPI和热部署技术破坏类加载器的双亲委派模式
下一篇 >>>Java基础-对象的引用类型


1.对象初始化过程

JVM中对象如何完成空间分配和初始化工作_第1张图片

2.对象的存储

对象不只存储在堆上,还有栈上分配和内存逃逸(JDK1.6.25之后出现)

栈上分配:方法内的对象只在当前方法使用,没有其他地方使用,没必要创建在堆里,这是分配在栈桢里的私有空间

public void a(){
    Test t = new Test();
}

内存逃逸:对象太大,或者会被其他方法调用,都会将对象存储在堆中,也就是从栈里逃到了堆中。

public Test a(){
    return new Test();
}

3.对象引用的方式

句柄引用(使用句柄池就不用改变变量指针应用):

JVM中对象如何完成空间分配和初始化工作_第2张图片

直接引用(速度快):

JVM中对象如何完成空间分配和初始化工作_第3张图片

具体用哪种是和我们的java虚拟机有关,常见hotSopt的虚拟机采用的是直接指针引用。

4.对象的布局

对象的布局请参考Java基础-对象布局


相关文章链接:
<< << << << <<<自定义SPI和热部署技术破坏类加载器的双亲委派模式
<< << << <<<服务器CPU飙升为100%问题排查及如何避免
<< << << << << << << <<<一张图看懂CMS垃圾回收器的底层原理
<< << << << << <<

你可能感兴趣的:(JVM中对象如何完成空间分配和初始化工作)