JVM-运行时数据区
1:JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算机内存空间的划分和分配。
运行时数据区
class---->变量 变量 方法 --->JVM如何分散 操作?
方法区和堆
方法区:
类信息,常量,静态变量。即时编译器编译后的代码
生命周期是随着虚拟机启动而启动,所以他是所有线程共享的区域。
Although the method area is logically part of the heap
非堆,JDK1.7 perm space Jdk.1.8Metar space
堆:
对象和数组分配的区域
生命周期是随着虚拟机启动而启动,所以他是所有线程共享的区域。
线程独有的一些内容
线程是为了执行方法 :java虚拟机栈---->栈帧----->
java虚拟机栈:一个线程对应一个java虚拟机栈,线程执行发放给你的时候每个方法代表被装进去的栈帧
本地方法栈:方法是native的
PC寄存器:记录当前线程执行的位置(也就是方法执行到的位置)
运行时常量池:编译时期生成的各种字面量和符号引用
线程共享:方法区 堆 ---->线程不安全
线程独享:java虚拟栈 pc寄存器 --->线程安全
方法的执行 栈帧
栈帧(方法)包含的内容
a-局部变量表:局部变量的
b-操作数栈: 栈结构进行保存 先进先出
c-动态链接:
d-方法返回地址->
Topic 2. 虚拟机栈是什么?虚拟机栈里有什么?
Topic 3. 栈帧是什么?栈帧里有什么?
Topic 4. 方法区是什么?方法区里有什么?
运行数据区是个逻辑模型,要靠物理模型实现,就是JVM的内存模型:https://www.cnblogs.com/lanqingzhou/p/12374882.html