虚拟机内存模型

一、虚拟内存模型

注:图中红色部分为线程共享,白色部分为线程私有

二、Java虚拟机栈

作用域:线程私有,生命周期同线程是一样的

存储数据:每个方法执行时会首先创建栈帧,存储局部变量表、操作数栈、动态链接和方法出口等信息。

其中局部变量表存储了基础数据类型(int、boolean、char、byte、long、short、float、double)和对象引用

异常类型:请求栈深度超过虚拟机允许的栈深度---StackOverflowError;动态扩展栈内存时,无法申请到足

够内存-----OutOfMemoryError

三、本地方法栈

作用域:执行的是本地Native方法所需要保存的信息,线程私有的区域

异常类型:同虚拟机栈一样,也会抛出StackOverflowError和OutOfMemoryError异常类型

四、Java堆

作用域:线程共享区域,存放这几乎所有的创建的对象实例,垃圾回收的主要区域

存储数据:所有对象创建的实例

异常类型:创建实例没有内存分配---OutOfMemoryError

五、方法区

作用域:线程共享区域

存储数据:被虚拟机加载的类信息、常量、静态变量和编译后的代码等数据

异常类型:内存不够时----OutOfMemoryError

5.1、常量池

作用域:方法区的一部分,所以是线程共享

存储数据:Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池

(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用

异常类型:OutOfMemoryError

六、直接内存

作用域:不是虚拟机运行的一部分

存储数据:可以作为一个辅助内存来使用,如NIO,可以将直接内存作为缓冲区来使用,可提高系统的效率。

异常类型:OutOfMemoryError

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值