目录
JVM定义
Java Virtual Machine组成结构
各部分详解
0、类加载器
1、栈是运行的单位,堆是存储的单位
2、栈中存放各个栈帧
3、方法区——多线程共享区域
JVM定义
- 运行Java程序的平台
- 内存结构、 垃圾回收、 类加载、 性能调优、 JVM 自身优化技术、 执行引擎、 类文件结构、 监控工具等。
下面我们详细聊聊JVM的内存结构(JMM)
Java Virtual Machine组成结构

- 虚拟机栈:JVM 运行过程中存储当前线程运行方法所需的数据, 指令、 返回地址
- 本地方法栈:Java程序自动调用底层C/C++函数库
- 程序计数器:当前线程执行的字节码的行号指示器
- 堆:存放我们申请的对象,也就是实例化对象,数组等
- 方法区:存放虚拟机加载的类相关信息,包括类信息,静态域(静态变量和静态方法),常量池(const val修饰的变量)、字符串常量池、编译后代码等
各部分详解
0、类加载器
JVM要执行文件,需要把编译后的.class文件装入类加载器

1、栈是运行的单位,堆是存储的单位
下图表示,程序计数器指向的代码mian函数执行后
main()内部生成的实例化对象A和对象B保存在堆中
栈中存入在指向A,B堆内存的指针

2、栈中存放各个栈帧
栈帧:在一个线程里,每当调用一个方法就会创建一个栈帧,并入栈,当方法执行完以后进行出栈
栈帧包括:局部变量表、操作数栈、动态链接、返回地址
- 局部变量表:存放基本数据类型的变量或者对象的堆内存地址
- 操作数栈:存储方法运行时执行引擎需要计算的数据
- 动态链接:符号引用
- 返回地址:方法执行完,将程序计数器中地址返回,方便后续栈帧执行

3、方法区——多线程共享区域

- 常量
- 静态属性,方法
- 类信息
- 字符串


![sqlserver同一数据库还原实例冲突可以用[文件和文件组]来备份解决](https://i-blog.csdnimg.cn/direct/763f5a91db6a483ba470b651644a3395.jpeg)






![[独家原创]基于(牛顿拉夫逊)NRBO-TCN多变量回归预测(多输入单输出) Matlab代码](https://img-blog.csdnimg.cn/img_convert/65f88b13fb770f41db58c75b7669b6cd.png)










