概述
Java虚拟机在运行时的区域称为Java运行时数据区,同时会分成不同的区域各司其职,Java虚拟机运行数据区结构如图显示:
作用
- 方法区
所有线程共享,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
异常:OutOfMemoryError - Java堆
所有线程共享,存储实例对象。
异常:OutOfMemoryError
该区域内存最大,是GC主要管理的区域,也称为GC堆 - Java栈
线程私有,存储Java方法中的局部变量,还包括对象的引用
异常:OutOfMemoryError、StackOverFlowError - 本地方法栈
与Java栈类似,但是服务对象是Netive方法。 - 程序计数器
线程私有,用于异常处理,线程恢复等基础功能
异常:在JVM中唯一没有OutOfMemoryError的内存区域。