JVM知识点-JVM内存模型

JVM知识点-JVM内存模型

注:更多文章,可以进入我的博客:筱白博客

JVM(Java Virtual Machine)是用来运行Java字节码的虚拟机。

1、JVM的内存区域划分

JVM的内存区域分为线程私有区域(程序计数器、Java虚拟机栈、本地方法栈)、线程共享区域(堆、方法区)。

1.1、线程私有区域

① 程序计数器

记录着当前线程执行的字节码位置,每个线程工作时都有独立的程序计数器,只为执行Java方法服务,如果执行 Native方法时,程序计数器为空。它是唯一没有Out Of Memory(内存溢出)的区域。

② Java虚拟机栈

又称方法栈,线程每执行一个方法时就会创建一个栈帧,这个栈帧包含该方法的局部变量表,操作数栈,动态链接,方法出口等信息,调用方法时执行入栈,方法执行完后执行出栈。当栈帧过多时(没有递归出口的递归操作),则会抛出SOF异常。

③ 本地方法栈

与Java虚拟机栈类似,也是用来保存执行方法的信息,执行Java方法是使用Java虚拟机栈,执行Native方法时则使用本地方法栈。

1.2 线程共享区域

① 堆

JVM内存管理最大的一块,几乎所有的对象实例都会放在这里(逃逸分析),当堆没有可用空间时,会抛出OOM异常。根据对象的存活周期不同,JVM把对象进行分代管理,可以划分为新生代和老年代。

②方法区

又称非堆区,用于存储被类加载器加载后的类信息、常量、静态变量等。

别称:JDK1.7 的永久代和1.8的元空间都是方法区的一种实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值