88-说说JVM的运行时数据区

具体来说,每个虚拟机是实际实现时,略有不同。

不过基本都符合虚拟机的规范,虚拟机规范将这个区域划分为5部分:

1,Java虚拟机栈

存储局部变量,操作数栈,方法出口等,为每个被执行的方法创建一个栈帧,是线程私有的,这一点跟堆是不同的

2,java堆

java虚拟机中内存最大的一块,所有new的对象,都在这里分配内存,被所有线程共享。

3,程序计数器

保存当前线程执行的字节码行号指示器,通过改变该值,来实现执行下一条字节码指令。

分支,循环,线程恢复等操作,都需要依赖这个计数器来实现。

4,方法区

存储类信息,常量,静态变量,即时编译的代码等数据

5,本地方法栈

与java虚拟机栈类似,只不过java虚拟机栈是服务java方法的,本地方法区栈服务虚拟机调用Native方法的。