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
是一个小的内存区域,保存当前线程执行的字节码指令的地址或行号
每个线程都有一个独立的程序计数器,属于线程私有

posted @ 2025-04-28 21:02  IT民工学Java  阅读(9)  评论(0)    收藏  举报