美文网首页
JVM原理分析

JVM原理分析

作者: 金牛阿甘 | 来源:发表于2018-01-16 16:09 被阅读0次

1,分析jvm内存模型:

分为两个区域,一个是共享区域。

分为方法区和堆,另外一个是私有区。私有区是每个线程私有的对象:程序计数器,虚拟机栈,本地方法栈。

下面

下面介绍下详细的内容:

方法区:类信息,常量,静态变量,class对象。(这里有一个误区就是变量保存在栈里面,其实不然只有局部变量才会保存在栈里面。你也可以通过是否共享来反推这个结论是正确的。)

推:存放对象实例和数组。

程序计数器:线程执行的位置信息。

虚拟机栈:保存局部变量,操作栈,方法返回地址,动态链接地址(堆里面对象的引用链接地址),额外附件信息。

虚拟机栈:局部变量表,操作数栈,动态链接,出口。

1,局部变量表 (locals大小,编译期确定),一组变量存储空间, 容量以slot为最小单位。操作栈(stack大小,编译期确定),操作栈元素的数据类型必须与字节码指令序列严格匹配

2,动态连接, 指向运行时常量池中该栈帧所属方法的引用,为了 动态连接使用。

       前面的解析过程其实是静态解析;

       对于运行期转化为直接引用,称为动态解析。

3,方法返回地址,正常退出,执行引擎遇到方法返回的字节码,将返回值传递给调用者异常退出,遇到Exception,并且方法未捕捉异常,那么不会有任何返回值。

4,额外附加信息,虚拟机规范没有明确规定,由具体虚拟机实现。

下面介绍实例内容:

测试代码:

测试代码:

TestO t = new TestT();

t.tt();

t.ttt();

说明执行顺序是:执行顺序是父类的构造方法 ,子类的构造方法。静态方法执行还是父类的。非静态的方法是子类的。

相关文章

网友评论

      本文标题:JVM原理分析

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