jvm运行时数据区

1.程序计数器:指向当前线程正在执行的字节码的地址和行号,不会出现 OutOfMemoryError
2.Java虚拟机栈:不存在垃圾回收问题(栈主要是执行程序)
栈帧存储:局部变量表、操作栈,动态链接、方法出口,包含方法执行(入栈)执行结束后(出栈)
线程请求的栈深度>虚拟机允许的深度时抛出异常 *Error
虚拟机栈动态扩展,无法申请到足够内存时抛出异常 OutOfMemoryError
3.本地方法栈:本地Native方法,会出现异常 *Error OutOfMemoryError
4.Java堆:jvm内存中最大的一块,共享线程的内存区域,存放对象实例(堆主要是存储对象)
5.方法区:线程共享的内存区域,存储类、常量、静态变量、编译后代码。内存不足抛出异常 OutOfMemoryError。JDK8移除方法区(永久代),使用元空间,元空间使用直接内存
6.运行时常量池:方法区的一部分,包含类的版本、字段、方法、接口信息、常量池,存放编译器生成的字面量和符号引用,无法申请到内存抛出异常 OutOfMemoryError
7.直接内存:不属于jvm运行时数据区,内存分配受到本机内存大小及处理器寻址空间的限制,会出现异常 OutOfMemoryError

上一篇:JVM 内存模型,java全套视频教程


下一篇:内存分配