JVM内存区域划分
1. 线程共享
1.1 堆
GC的主要区域,存放对象实例,几乎所有的对象都在这里分配空间。
1.2 方法区
又称为“非堆”,其中包含字节码、静态变量、常量、类信息。
2. 线程私有
2.1 程序计数器
字节码执行到第几行了,记录当前进度。
2.2 虚拟机栈
存放的是栈帧,每个方法被调用的时候都会创建一个栈帧。栈帧包含四个部分,局部变量表、操作数栈、动态链接和返回地址。对象引用和基本类型都是在局部变量表中保存的。其中对象的引用是直接指向堆中的对象的。
2.3 本地方法栈
native服务,并不限制语言。
参考资料:
- Java面试必知必会.Java虚拟机.01.JVM内存区域
- 知识点:JVM内存区域划分