JVM

程序计数器

线程私有,存储虚拟机字节码指令地址,无OutOfMemoryError

虚拟机栈

1、线程私有,生命周期与线程相同,描述线程内存模型

2、方法执行时,创建一个栈帧,存储局部变量、操作数栈、动态链接、方法出口

3、请求栈深度过大,如无限递归,StackOverflow

4、申请内存不足,抛出OutOfMemoryError

本地方法栈

作用与虚拟机栈类似

1、内存最大,线程共享

2、虚拟机启动时创建,存放对象实例

3、通过-Xmx、-Xms设置大小

4、堆没有内存完成实例分配,无法再扩展时,抛出OutOfMemoryError

方法区

线程共享,存储类型信息、常量、静态变量、代码缓存

JDK8之前,永久代,受永久代-XX:MaxPermSize限制

JDK8,元空间,共享系统内存

内存不足,抛出OutOfMemoryError

运行时常量池

方法区的一部分,存放编译期生成的各种字面量与符号引用,具备动态性

运行期间也可以将常量放入,如String的inyern()

内存不足,抛出OutOfMemoryError

浙ICP备11005866号-12