JVM(二) 堆内存分析与对象创建过程
发布时间
阅读量:
阅读量
JVM(二)—堆内存分析及对象的创建过程
1 堆内存
Java虚拟机所管理的内存区域中,堆内存(Java Heap)占据最大比例,且为所有线程所共享。该区域在虚拟机启动时即被创建,主要用于存储对象实例以及数组结构。
Java堆内存可进一步划分为新生代与老年代两个部分。
新生代:-Xmn
- 该区域由Eden区和Survivor区共同构成,两者的比例设定为8:1,并可通过参数-XX:SurvivorRatio = 8进行调整。
- 初始时,新生成的对象通常在Eden区分配内存空间。当Eden区空间不足时,将触发首次Minor GC操作,将仍存活的对象迁移至S0区域,并清空Eden区;若此时仍无法满足需求,则对Eden与S0区域执行Minor GC,将存活对象转移至S1区域,并清空Eden与S0。之后当Eden与S1再次满载时,再次触发Minor GC过程,此时会将存活于Eden与S1中的对象转移至S0区域,并清空两者。这一过程循环往复。(对象在两个Survivor区域之间不断迁移,在每次经历Minor GC后其GC年龄值增加1次,一旦超过预设阈值则会被转移至老年代。)
老年代:Tenured Space ,其容量由Xmx与Xmn之差决定
- 老年代主要存储那些在新生代经过多次Minor GC后仍然存活的对象。
全部评论 (0)
还没有任何评论哟~
