JVM 运行时的数据区域
原文地址:http://www.programcreek.com/2013/04/jvm-run-time-data-areas/
以下是我阅读 JVM 相关资料时整理的笔记:

1. 每个线程的数据区(不共享)
每个线程的数据区域包括程序计数寄存器,JVM 堆栈和本地方法堆栈。 它们都是在创建新线程时创建的。
程序计数寄存器用于控制每个线程的每一次执行。 JVM 堆栈包含下图所示的框架。 本地方法堆栈用于支持本地方法,即非 Java 语言的方法。
2. 所有线程共享的数据区域
所有线程共享 Heap 和 Method 区域。
Heap 是我们最经常处理的区域。 它用于存储 JVM 启动时创建的数组和对象。 垃圾收集也是在这一块工作。
Method 区域存储运行时的常量池,字段和方法数据,以及方法和构造函数代码。
运行时常量池(Runtime Constant Pool)是每个类或每个接口在运行时其中的 constant_pool 表的表示形式。 它包含几种常量,从编译时已知的数字到方法和字段引用,必须在运行时解析。

Stack 包含 Frames,当调用方法时,frame 被推送到堆栈。 一个 frame 包含局部变量数组,操作数堆栈,并且引用到常量池。
有关更多信息,请访问官方 JVM 站点。
参考阅读: