JVM运行时内存概念-堆栈及新生代、老年代、持久代

JVM内存有一些按不同标准划分的概念,这里来理清一下。

一、首先java虚拟机规范定义了java运行时数据区在概念上应该有的分区,这是抽象概念不对应也不限制物理上的具体实现,不同的虚拟机可以有不同的实现,但是在抽象上必须要有这些区。

二、说完了逻辑概念,再说虚拟机实现,在实现虚拟机的时候,考虑垃圾回收效率,将JVM内存划分为三块:元数据区,老年代,新生代;注意这里的分代概念和运行时数据区是两个不同层次和标准的概念,是两套概念。

使用jvisualvm.exe安装Visual GC插件后可以查看到如下各代使用情况,从左到右是:元数据区,老年代,新生代;新生代包含Eden(伊甸园)、S0(0号幸存区)、S1(1号幸存区);

1.新生代:Eden+S0+S1

2.老年代:OldGen

3.永久代(方法区的实现) : PermGen----->替换为Metaspace(本地内存中)

    java运行时内存按抽象逻辑和内存回收实现上划分了两套概念,他们之间可以有一定的对应关系,但不是确定的,jdk8就将运行时常量池从永久代移除了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值