
方法区
用于存放已被虚拟机加载的类信息,常量,静态方法;
程序编译时已分配完成,在程序整个运行期间均存在
运行时常量池:字面量,符号引用
Java栈
线程私有;用于存放方法的局部变量表(或者引用),动态链接,方法入口等
线程请求的栈深度大于虚拟机允许的栈深度,StackOverFlowError;
虚拟机栈可动态扩展,扩展时无法申请到足够的内存,OutOfMemoryError。
堆区
存放成员变量(包括其引用),对象的实例,以及数组
随着虚拟机的启动而存在,但需要的内存区域,随方法的执行而确定。
肯定不会抛出StackOverflowError的异常,只有OutOfMemoryError相关类型的异常
本地方法栈
处理native方法,功能和java stack一样
会有StackOverFlowError和OutOfMemoryError异常
程序计数器
一个线程对应一个计数器,用于记录当前线程所执行的字节码代号;
唯一不会OutOfMemory的区域