JVM内存体系中主要由几个子系统和内存区组成:
1.垃圾回收器:回收堆内垃圾对象
2.类装载子系统:加载类文件,验证加载的类的正确性,初始化类成员变量和方法
3.执行引擎:执行类装载系统装载类的方法的指令
4.运行时数据区:又称为虚拟机内存或者Java内存
运行时数据区又分为五部分
名称 | 英文名称 | 描述 | 权限 |
---|---|---|---|
程序计数器 | Program Counter Register | 记录本线程下一条指令的地址 | 线程私有 |
Java虚拟机栈 | VM Stack | 记录线程执行方法中的局部变量等信息,以栈帧为单位进行压栈和出栈 | 线程私有 |
本地方法栈 | Native Method Stack | 记录本地方法的状态 | 线程私有 |
Java堆 | Heap | 存储对象,几乎所有对象都是在堆中保存的,生命周期和虚拟机生命周期一样 | 线程间共享 |
方法区 | Method Area | 存放类、接口信息、常量、静态变量等,垃圾回收器会像管理堆一样管理这一片区域 | 线程间共享 |
Runtime Constant Pool | 运行时常量池包含在方法区,存放一些字面量和符号引用 | 线程间共享 |