Java面试笔记1(JVM)
1.虚拟机内部组成及基本运行流程:

上图详解:1.通过类装载子系统加载类文件到运行时数据区(内存模型中)2.通过字节码执行引擎运行运行时数据区的代码。
2.JVM部分指令:


3.栈中内容详解:

每个栈帧中都有局部变量表,操作数栈,动态链接,方法出口。
局部变量表:存放局部变量
操作数栈:存放操作数,如10,20等,先进栈保存操作数,出栈后将操作数赋值给局部变量表中的局部变量(数值型数据操作的临时空间)
动态链接:方法的字节码文件存在于方法区中,当方法1调用方法2时,方法1会在方法区中找方法2的入口地址。其中方法2的名称是符号引用,方法区(方法2)中的代码是直接引用(符号引用转直接引用)
方法出口:当方法1调用方法2的时候,方法2中的方法出口就已经记录了方法结束时需要跳转的代码位置,如果有返回值也会将返回值返回
栈中有new的对象的情况:会在堆中new对象,栈中的局部变量表中保存的是堆中的地址

4.方法区(jdk1.8之后也叫元空间)
方法区中存放的是常量,静态变量和类信息
注意:如果静态变量中存放的是new的对象,也是保存的是堆中的地址
5.本地方法栈:
源码中带native修饰的方法,基本是有c++或c运行时存放的栈。
6.垃圾回收详解:


其中,minor gc中的Eden区为垃圾放置区,通过可达性分析算法得出,如果仍有对象引用,则放入到Survivor区,不会被垃圾回收
浙公网安备 33010602011771号