Java虚拟机-JVM由哪些部分组成
JVM由哪些部分组成
方法区(Method Area):「JVM调优部分」
存储类信息、常量、静态变量、即时编译器JIT 编译后的代码
属于线程共享区域,所有线程共享方法内存
在JDK8之前,HotSpot使用永久代(PermGen)来实现方法区,JDK8之后被元空间(Metaspace)取代,元空间使用的是本地内存(Native Memory)
1.6 常量池 在方法区中
1.7 常量池 在堆中;为了去永久化
1.8 常量池 在方法区中;没有永久代,通过元空间代替
堆(Heap):「JVM调优部分」
用于存放所有线程共享的对象和数组,是垃圾回收的主要区域
虚拟机栈(JVM Stack):
每个线程创建一个栈,用来保存局部变量、操作数栈、动态连接、方法出口信息等
局部变量表中存储的是基本数据类型以及对象引用
栈是线程私有的,生命周期和线程相同
本地方法栈(Native Method Stack)
为本地方法服务,使用JNI调用的本地代码在此区域分配内存
和虚拟机栈类似,也是线程私有的
程序计数器(Program Counter Register)
是一个小的内存区域,保存当前线程执行的字节码指令的地址或行号
每个线程都有一个独立的程序计数器,属于线程私有


浙公网安备 33010602011771号