作者之前都只是了解堆、栈、方法区中存储什么数据,但是对彼此之间的数据交互一直不太清楚(奈何技术太菜)。在查阅了资料之后对这方面有了了解,记录一下该知识点。作者技术有限,如有错误请指出。
如下图所示来讲解堆,栈,方法区交互,此文默认您已经了解了jvm的运行时数据区域,在此基础上进行讲解。如图所示:
首先创建两个类,用于讲解。
public class Yi_ding{ //运行时把加载之后的Yi_ding的信息存入方法区(类型信息、常量、静态变量、方法信息等)
public static void main(String[] args) {
Function function = new Function(); //function是对象引用存在栈中,new Funciotn()的实例放在堆中(包含方法区中的类型信息(方法信息等)引用等)。
function.out2(); //调用out2方法
}
}
public class Function{ //运行时把加载之后的Function的信息存入方法区(类型信息、常量、静态变量、方法信息等)
public void out1(){
System.out.println("我是Function的方法");
}
public void out2(){
out1(); //这块调用out1主要是为了展示栈帧和栈帧中的动态链接
System.out.println("我是Yi_ding的方法");
}
}
执行过程如下:
参考文章
https://blog.csdn.net/zhmi_1015/article/details/92796016
本文地址:https://blog.csdn.net/qq_37909141/article/details/107341443
如对本文有疑问, 点击进行留言回复!!
集合框架——Map、泛型以及Collection算法常用方法
Elasticsearch 升级 7.x 版本后,我感觉掉坑里了
Mybatis的插件运行原理以及如何编写一个Mybatis的插件
网友评论