运行时数据区简短总结

JAVA源代码被编译后生成class文件,由类加载器加载后交给JVM来执行,JVM会用一段存储空间来存储执行过程中用到的数据和相关信息,这个数据段被叫做Runtime data area(运行时数据区),运行时数据区分为程序计数器、java方法栈,本地方法栈、堆和方法区五个部分。

运行时数据区简短总结_第1张图片

1.PC(程序计数器):PC是一段较小的内存,用来存放java程序下一条指令所在的地址(如果正在执行的是native方法,则该区域的值为undefined),程序计数器的空间大小不会随着程序的运行而变化,所以该区域不存在内存不足(out of memory)的情况。而且在线程的切换过程中为了每个线程都能不受其他线程的影响,所以每个线程都有一个自己的程序计数器。

2.heap(堆):用来存储对象及数组,所有线程共享。

3.Method area(方法区):与堆一样,是被线程共享的区域,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

4.vm stack(虚拟机栈):也就是java方法栈,是java方法运行的内存模型,java栈是与线程关联的,栈中分了许多个栈帧,这些栈帧是与每个方法关联起来的,每运行一个方法就创建一个栈帧,每个栈帧会含有一些局部变量、操作栈和方法返回值等信息。

5.native method stack(本地方法栈):与java方法栈类似,只不过一个是java方法的内存模型,一个是本地方法的内存模型。

 

 

 

 

你可能感兴趣的:(JAVA语言)