运行时数据区
当我们当我们想要更深入的学习java的时候,jvm是一个绕不过去的话题,这篇博文算是自己学习的笔记吧!
上图是一个简单的java运行区示意图
程序计数器
程序计数器(program counter register)是一个比较小的内存空间,可以看做是当前线程执行字节码的行号指示器,字节码解析器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,来完成程序的分支、循环、跳转、异常处理、线程恢复等基础功能。
当然咯,这块区域是线程私有区域,也是java内存区域唯一不会报OOM异常的区域
java虚拟机栈
java虚拟机栈(java virtual machine stacks)和程序计数器一样。它也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是java方法执行的内存模型,每个方法在创建的时候,都会常见一个栈帧(stack frame),用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
局部变量表:存放了编译器,可知的各种基本数据类型、对想引用类型(reference 它不等同于对象本身,可能是一个指向对象地址的引用指针,也可能是指向