JVM内存模型

在这里插入图片描述

程序计数器

每个线程私有,记录程序执行到哪一步。通过这个计数器的值来选取下一条需要执行的字节码指令。因为所存的只是下一条指令的地址,就算死循环也不会让内存溢出,所以不存在OutOfMemoryError(内存溢出) 异常。

虚拟机栈

每个线程私有,每个 Java 方法执行的时候都会创建一个方法栈帧,并从虚拟机栈的顶部入栈(压栈),执行完成后从虚拟机栈出栈(弹栈)。会抛出 StackOverflowError(堆栈溢出,线程请求的栈深度大于虚拟机所允许的深度) 和 OutOfMemoryError(内存溢出,如果虚拟机栈可以动态扩展,而扩展时无法申请到足够的内存) 异常。

本地方法栈

区别于 Java 虚拟机栈的是,本地方法栈为虚拟机执行的是Native方法Native方法指的是 Java 通过 JNI 直接调用本地 C/C++ 库。本地方法栈也会抛出 StackOverflowError(堆栈溢出,线程请求的栈深度大于虚拟机所允许的深度) 和 OutOfMemoryError(内存溢出,如果本地方法栈可以动态扩展,而扩展时无法申请到足够的内存) 异常。

线程共享,堆可能是JVM所管理的内存中最大的一块,主要是存放对象实例和数组。会抛出OutOfMemoryError(内存溢出) 异常。

方法区

属于线程共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值