对JVM的简单学习,文章里的图片来自B站的一个视频,具体视频地址给忘记了hhhh
JVM结构
可以使用命令
javap -c SOURCE.class > TARGET
对字节码文件进行反编译
1. 类装载子系统
2. 运行时数据区(内存模型)
线程共享:堆和方法区,线程私有:栈、本地方法栈和程序计数器
- 堆,new出来的对象,调优的重点区域
- 栈(线程),里面包含了多个栈帧,一个方法一块栈帧,一个栈帧里包括了
- 本地方法栈,调用其他语言实现方法开辟的空间
- 方法区(元空间),常量池、静态变量和类信息(class) [3]
- 程序计数器(线程),指向将要执行代码的行号(内存地址),多线程切换使用
3. 字节码执行引擎
执行方法区中的类信息,动态修改程序计数器的值,执行GC。