目录:
1.pc寄存器
2.Java虚拟机栈
3.Java堆
4.方法区
5.运行时常量池
6.本地方法栈
1.pc寄存器
Java虚拟机支持多线程,每一条线程都有自己的pc寄存器。一个Java虚拟机线程在同一时刻只会执行一个方法,成为线程的当前方法。
2.Java虚拟机栈
每一条Java虚拟机线程都有私有的Java虚拟机栈,这个栈与线程同时创建;
用于存储局部变量以及过程结果,同时在方法调用与返回中起作用(引用存储),并且栈的内存不需要是连续的;
3.Java堆
堆是可供各个线程共享的运行时内存区域,也是供类实例和数组对象分配内存的区域;
Java堆在Java虚拟机启动的时候就创建了,存储了被自动内存管理系统所管理的对象;
Java堆可以是固定大小的,也可以是动态扩展,并在不需要过多空间的时候自动收缩的。
同样的,Java堆所使用的内存不需要是连续的;
4.方法区
方法区是可供各个线程共享的运行时内存区域,存储了每一个类的结构信息,例如:运行时常量池,字段,方法数据,构造数据,构造函数,普通方法的字节码内容,还包括一些在类,实例,接口初始化时用到的特殊方法;
5.运行时常量池
是class文件中每一个类或者接口的常量池表的运行时表示形式;
每一个运行时常量池都在Java虚拟机的方法区中分配;
6.本地方法栈
Java虚拟机可能会用到传统的栈的执行,这个栈就是本地方法栈;
当虚拟机用到其他语言来实现指令解释器的时候,也会用到本地方法栈;
如果支持本地方法栈,这个栈一般会在线程创建的时候按线程分配;(由这里可知,本地方法栈应该是线程私有的)
未完...