如下为深入理解Java虚拟机中的图
程序计数器
这部分是线程私有的,用于表示当前程序执行的位置,虚拟机通过修改这个计数器的值选取下一条执行的命令。
虚拟机栈
线程私有的,生命周期与线程相同。描述的是Java方法(区别于native的本地方法)执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储操作局部变量表、栈、动作链接、方法出口等信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。局部变量表存储基本数据类型,以及对象的引用
本地方法栈
与虚拟机栈相似,只是他为虚拟机的native方法服务
堆
所有线程共享的内存区域,存储对象的地方
方法区
所有线程共享的内存区域,主要储存 a 类的属性 b 运行时常量池