JVM虚拟机深入理解(一) - 虚拟机运行时数据区

2020-05-29  本文已影响0人  ElliotG

1. 运行时数据区域

JVM虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域就叫运行时数据区域。

这些区域都有各自的用途,以及创建和销毁的时间。
有的区域随着虚拟机进程的启动而一直存在,
有的则是依赖用户线程的启动和结束而建立和销毁。

总体结构图如下:

Java虚拟机运行时数据区.png

 

2. 程序计数器(Program Counter Register)

 

3. Java虚拟机栈(VM Stack)

异常 原因
OutOfMemoryError 虚拟机栈扩展时无法申请到内存空间
StackOverflowError 线程请求栈深度 > 虚拟机允许深度

 

4. Java堆(Heap)

Java堆是虚拟机所管理的内存中最大的一块。
它是被所有线程共享的一块内存区域
它是垃圾收集器管理的内存区域,也称作GC堆

异常 原因
OutOfMemoryError 堆中没有足够的内存完成实例对象的分配

 

5. 方法区(Method Area)

用于存储已被虚拟机加载的类型信息,常量,静态变量,即时编译后的代码缓存等数据。
又称为非堆。

异常 原因
OutOfMemoryError 方法区无法满足内存分配的需求
上一篇 下一篇

猜你喜欢

热点阅读