JVM内存结构图
2020-04-21 09:57:02 3 举报
JVM内存结构图
作者其他创作
大纲/内容
栈帧(Stack Frame)
Java栈(VM Stack)
方法区(Method Area)
Java运行时数据区(Runtime Data Area)
Java栈
本地方法栈(Native Method Stack)
附加信息
堆(Heap)
线程共享
程序计数器(Program Counter Register)
方法返回地址
JVM总结:学过C的,切记不要把Java和C语言的内存分析进行混淆。由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间被称为运行时数据区。RDA包括:程序计数器、Java栈、本地方法栈、堆、方法区。 程序计数器:在JVM中,为了保证线程每次执行完都可以恢复到线程执行前的状态,每个线程都会有一个程序计数器,线程执行到非native方法时,程序计数器保存的是执行指令的地址,执行native方法时,程序计数器中的值是undefined。程序计数器的空间大小不会随着程序执行而改变,对于程序计数器来说不会发生内存溢出的现象。Java栈:当线程执行一个方法时,会自动创建一个对应的栈帧;当方法执行完之后,便会自动将栈帧弹出。线程当前执行的方法产生的栈帧必定位于Java栈的顶部。本地方法栈:为执行本地方法(Native Method)服务的。堆:用来存放对象本身以及数组的。方法区:存储每个类的基本信息(实体类)、静态变量、常量以及编译后的代码等。
局部变量表
线程私有
操作数栈
指向运行时常量池的引用
0 条评论
回复 删除
下一页