关于java:JVM真香系列方法区堆栈之间到底有什么关系

关注“Java后端技术全栈”

回复“000”获取大量电子书

栈指向堆

如果在栈帧中有一个变量,类型为援用类型,比方:

package com.tian.my_code.test;
public class JvmCodeDemo {
    public  Object testGC(){
        int op1 = 10;
        int op2 = 3;
        Object obj = new Object();
        Object result=obj;
        return result;
    }
}

这时候就是典型的栈中元素obj指向堆中的Object对象,result的指向和obj的指向为同一个对象。

应用命令

javac -g:vars JvmCodeDemo.java

进行编译,而后再应用

javap -v JvmCodeDemo.class >log.txt

而后关上log.txt文件

如果还有纳闷,能够再联合下面的字节码图和关系图来看,这样了解就更轻松些。

办法区指向堆

办法区中会寄存动态变量,常量等数据。

如果是上面这种状况,就是典型的办法区中元素指向堆中的对象。

堆指向办法区

办法区中会蕴含类的信息,对象保留再堆中,创立一个对象的前提是有对应的类信息,这个类信息就在办法区中。

Java对象内存布局

一个Java对象在内存中包含3个局部:对象头、实例数据和对齐填充

举荐浏览:

《Java并发编程的艺术》.pdf

《高效程序员的45个习惯:麻利开发修炼之道》.pdf

《Java Web企业我的项目实战》.pdf

关注公众号“Java后端技术全栈”

收费获取500G最新学习材料

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理