JVM的组成
我们先笼统的总结一下
- 类装载子系统
- 运行时的数据区(内存)
- 堆区(heap) : new 出来的对象都放到堆里
- 栈区(stack):线程栈,线程私有,存放线程用到 的局部变量,执行方法的时候,就会将用到的方法插入栈,一个方法对应于一个栈帧。
- 方法区(method area):存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。JDK 8开始,HotSpot将永久代(Permanent Generation)移除,取而代之的是元空间(Metaspace)。
- 程序计数器(PC): 指向当前指令指向的地址
- 字节码执行引擎
其实就这三部分,但是主要我们要了解它的流程
我画了一张图,大家可以看一下
第一步:
jdk将.java
文件编译为.class
字节码文件,
第二步:
类加载子系统将 A.class 文件放入JVM数据区也就是内存内存
此时我们需要了解一下JVM的内存模型:
JVM的数据区由五个部分组成
- 堆区(heap) : new 出来的对象都放到堆里
- 栈区(s