1.程序计数器:指向当前线程正在执行的字节码的地址和行号,不会出现 OutOfMemoryError
2.Java虚拟机栈:不存在垃圾回收问题(栈主要是执行程序)
栈帧存储:局部变量表、操作栈,动态链接、方法出口,包含方法执行(入栈)执行结束后(出栈)
线程请求的栈深度>虚拟机允许的深度时抛出异常 *Error
虚拟机栈动态扩展,无法申请到足够内存时抛出异常 OutOfMemoryError
3.本地方法栈:本地Native方法,会出现异常 *Error OutOfMemoryError
4.Java堆:jvm内存中最大的一块,共享线程的内存区域,存放对象实例(堆主要是存储对象)
5.方法区:线程共享的内存区域,存储类、常量、静态变量、编译后代码。内存不足抛出异常 OutOfMemoryError。JDK8移除方法区(永久代),使用元空间,元空间使用直接内存
6.运行时常量池:方法区的一部分,包含类的版本、字段、方法、接口信息、常量池,存放编译器生成的字面量和符号引用,无法申请到内存抛出异常 OutOfMemoryError
7.直接内存:不属于jvm运行时数据区,内存分配受到本机内存大小及处理器寻址空间的限制,会出现异常 OutOfMemoryError
相关文章
- 02-05#pragma data_seg 共享数据区(转)
- 02-05python-GAE数据存储区缓存键与过滤器
- 02-05运行Google App Engine Python的本地数据存储区是否有任何限制?
- 02-05fseek函数会刷新C缓冲区中的数据吗?
- 02-05entity framework 开始运行时向数据库中填入一些初始数据
- 02-05jvm中的新生代Eden和survivor区
- 02-05054、JVM实战总结: 案例实战:每日百亿数据量的实时分析引擎,如何定位和解决频繁Full GC问题?
- 02-05「每日五分钟,玩转JVM」:线程共享区
- 02-05JVM运行时内存组成分为一些线程私
- 02-05了解JVM运行时的内存分配