9.1 JVM 运行时的数据区域划分

以下是JVM规范上内容。

9.1 JVM 运行时的数据区域划分_第1张图片
内存划分

1 每个线程的数据区(不共享)

每个线程的独立共享区包括程序计数器,JVM 栈,本地方法栈,在创建线程时候这些被一同创建。

程序计数器用于控制每个线程执行。JVM堆栈包含下图的调用帧。
本地方法栈用于支持本地方法,比如非Java语言的方法。

2. 被所有线程共享的区域

所有线程共享堆和方法区。
堆是我们常处理的区域,它包含着数组和对象。在启动的时候被JVM创建,垃圾收集器主要工作在这个区域。

方法区保存运行的常量池,字段和方法数据,方法和构造函数的代码。

运行常量池是类文件中constant_pool表中每个类或每个接口运行时候的表示形式。它包含几种常量,从编译时已知的数字字母到方法和字段引用,必须在运行时解析。

9.1 JVM 运行时的数据区域划分_第2张图片
JVM栈信息

堆栈包含框架,当调用方法时候,Frame被推送到堆栈中。一个Frame包含局部变量数组,操作数堆栈,到常量池的引用等。

你可能感兴趣的:(9.1 JVM 运行时的数据区域划分)