jvm原理
1.JVM运行时数据区
(1)程序计数器:线程私有,可以看做是当前线程所执行的字节码的行号指示器。选取下一条字节码指令、分支、线程恢复等都需要程序计数器来完成。
(2)虚拟机栈:同样是线程私有,它描述的是java方法执行的内存模型:每个方法在执行的同时,都会创建一个栈帧,用来存放局部变量表、操作数栈、方法出口等信息。java方法从调用到执行,对应着一个栈帧在虚拟机栈中的入栈与出栈。
(3)本地方法栈:与虚拟机栈的作用类似,不同的是虚拟机栈为java方法的执行服务,而本地方法栈为本地方法服务。
(4)堆:线程共享,是java虚拟机中所管理内存最大的一部分,它用来存放对象实例以及数组。
(5)方法区:与java堆一样是线程共享的,用于存储已经被虚拟机加载的类信息、常量、静态变量。
2.JVM中对象的创建过程