jvm运行时数据区域
https://www.programcreek.com/2013/04/jvm-run-time-data-areas/
1.每个线程的数据区域(未共享)
每个线程的数据区域包括程序计数器寄存器、JVM堆栈和本机方法堆栈。它们都是在创建新线程时创建的。
程序计数器寄存器用于控制每个线程的每次执行。
JVM堆栈包含框架,如下图所示。
本机方法堆栈用于支持本机方法,即非Java语言方法。
2.所有线程共享的数据区域
所有线程共享堆和方法区域。
堆是我们最经常处理的区域。它存储JVM启动时创建的数组和对象。垃圾收集工作在这个地区。
方法区域存储运行时常量池、字段和方法数据以及方法和构造函数代码.
运行时常量池是类文件中常数池表的每类或每个接口的运行时表示形式。它包含几种常量,从编译时已知的数字文本到必须在运行时解析的方法和字段引用。
堆栈包含帧,当调用方法时,框架被推送到堆栈中。框架包含局部变量数组、操作数堆栈、对常量池的引用。
有关更多信息,请访问正式的JVM规范站点。
参考资料:
1. JVM规范-运行时数据区域
2. Java字节码基础