【JVM】内存模型

这里是引用
在这里插入图片描述
JVM内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分。

程序计数器:每条线程都有自己独立的程序计数器,线程私有内存,正在执行的java方法,计数器记录的是虚拟机字节码指令的地址,如果是Native方法,计数器则为空;

Java虚拟机栈:也是线程私有内存;每个方法执行的时候都会创建一个栈帧,存储局部变量,操作数,动态链接,方法返回地址;方法从开始执行到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈;通常说的栈一般是指在虚拟机栈中的局部变量部分,局部变量所需要的内存在编译期间都完成分配。StackOverflowError是线程请求的栈深度大于虚拟机所允许的深度;如果虚拟机可以动态扩展,当扩展到无法申请到内存的时候,就会出现OOM;

本地方法栈:也是线程私有,和虚拟机栈类似,主要为虚拟机使用到的Native方法服务,也会抛出StackOverflowError和OOM;

Java堆:被所有线程共享的一块内存区域,在虚拟机启动的时候创建。当无法分配内存的时候会有OOM。

方法区:程序共享,存储已经被虚拟机加载的类信息,常量,静态变量,内存回收目标主要针对常量池的回收和堆类型的卸载。
方法区也被称为永久代,jdk8真正开始废弃永久代,而使用元空间(Metaspace)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值