文章目录
java虚拟机是是每个java程序员学习的重点。
JVM内存结构
JVM的内存结构主要由两大部分组成:
1、线程私有部分:程序计数器、虚拟机栈、本地方法栈。
2、线程共享部分:方法区和堆。
另外直接内存:不是虚拟机运行
时数据区的一部分,也不是
java虚拟机规范中定义的内
存区域;
1、线程私有部分
① 程序计数器
较小的内存空间,当前线程执行的字节码的行号指示器;每条线程都要有一个独立的程序计数器,各线程互不影响;
正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果还是 Native 方法,则为空。
这个内存区域是唯一一个在虚拟机中没有规定任何 OutOfMemoryError 情况的区域。
② 虚拟机栈
线程私有,生命周期和线程,每个方法在执行的同时都会创建一个栈帧 用于存储局部变量表,指向常量池的指针,操作数栈,动态链接,方法出口等信息 。方法的执行就对应着栈帧在虚拟机栈中入栈和出栈的过程; 栈里面存放着各种基本数据类型和对象的引用 ;
栈帧( Frame)是用来存储数据和部