JVM 的早期版本并没有进行分区管理;这样的 后果是JVM 进行垃圾回收时,不得不扫描JVM 所管理的整片内存,所以搜集垃圾 是很耗费资源的事情,也是早期JAVA 程序的性能低下的主要原因。随着JVM 的 发展,JVM 引进了分区管理的机制。
采用分区管理机制的JVM 将JVM 所管理的所有内存资源分为2 个大的部分:
永久存储区(Permanent Space)和堆空间(The Heap Space)。其中堆空间又分为新生区(Young (New) generation space)和养老区(Tenure (Old) generation space),新生区又分为伊甸园(Eden space),幸存者0 区(Survivor 0 space)和幸存者1 区(Survivor 1 space)。
永久存储区(Permanent Space):永久存储区是JVM 的驻留内存,用于存放JDK自身所携带的Class,Interface 的元数据,应用服务器允许必须的Class,Interface 的元数据和Java 程序运行时需要的Class 和Interface 的元数据。被装载进此区域的数据是不会被垃圾回收器回收掉的,关闭JVM 时,释放此区域所控制的内存。
堆空间(The Heap Space):是JAVA 对象生死存亡的地区,JAVA 对象的出生,成长,死亡都在这个区域完成。堆空间又分别按JAVA 对象的创建和年龄特征分为养老区和新生区。
新生区(Young (New) generation space):新生区的作用包括JAVA 对象的创建和从JAVA 对象中筛选出能进入养老区的JAVA 对象。伊甸园(Eden space):JAVA 对空间中的所有对象在此出生,该区的名字因此而得名。也即是说当你的JAVA 程序运行时,需要创建新的对象,JVM 将在该区为你创建一个指定的对象供程序使用。创建对象的依据即是永久存储区中的元数据。
幸存者0 区(Survivor 0 space)和幸存者1 区(Survivor1 space):当Eden区的空间用完时,程序又需要创建对象;此时JVM 的垃圾回收器将对Eden区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁工作。同时将伊甸园中的还有其他对象引用的对象移动到幸存者0 区。幸存者0 区就是用于存放伊甸园垃圾回收时所幸存下来的JAVA 对象。当将伊甸园中的还有其他对象引用的对象移动到幸存者0 区时,如果幸存者0 区也没有空间来存放这些对象时,JVM 的垃圾回收器将对幸存者0 区进行垃圾回收处理,将幸存者0 区中不在有其他对象引用的JAVA 对象进行销毁,将幸存者0 区中还有其他对象引用的对象移
动到幸存者1 区。幸存者1 区的作用就是用于存放幸存者0 区垃圾回收处理所幸存下来的JAVA 对象。
养老区(Tenure (Old) generation space):用于保存从新生区筛选出来的JAVA对象。
分享到:
相关推荐
jvm内存模型,jvm脑图,jvm调优,jvm垃圾回收算法,jvm垃圾回收器,逃逸算法等总结。
JVM内存模型,永久区内存( Permanent space )和堆内存(heap space)。
jvm内存模型.pdf
JVM内存模型深度剖析与优化
有关JVM内存模型的概述,用于对JVM的整体把握从而针对性的学习
JVM内存模型及分区
第二节:JVM内存模型 1.1 概念 1.2 JVM内存模型 1.3 Heap堆内存模型 第三节:定位垃圾对象的依据 1.1 引用计数法 1.2 可达性算法 第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)...
jvm内存模型
主要为大家讲解JVM内存模型|内存结构|内存屏障,他们的概念,有什么关联以及各种的功能
jvm内存模型图
JVM内存模型YYDS
java jvm内存模型
JVM内存模型和性能优化
深入详解JVM内存模型与JVM参数详细配置.pdf
Java 虚拟机JVM内存模型与垃圾收集策略,看完此资料,JVM将不再话下
深入详解JVM内存模型与JVM参数详细配置,感兴趣的小伙伴们可以一块学习下。
JVM内存模型架构图,核心部分包括: GC主要在新生区(伊甸园区)、老年区 新生区(伊甸园区(对象都是在这个区new出来的)、幸存区to、幸存区from:幸存区位置会互相交换,谁空谁是to) 老年区 永久区:存储的是...
jvm内存模型组成部分
JVM内存模型以及垃圾收集策略解析 可以深入了解java虚拟机的原理