堆内存结构

不同版本JDK使用的虚拟机也不同

【JDK7】堆中分为三个区域、年轻带老年代永久带年轻带中又有三个区域,Eden空间、Survior1空间、Survior2空间.年轻带的三个区域空间占比默认8:1:1,年轻带和老年代的空间占比默认1:2

(2019年目前主流JVM)【JDK7以上】堆中分为三个区域、年轻带、老年代、元数据区,年轻带中也有三个区域,Eden空间、Survior1空间、Survior2空间.年轻带的三个区域空间占比默认8:1:1,年轻带和老年代的空间占比默认1:2

YGC就是轻量级GC 年轻带GC

FullGC就是重量级GC 老年代GC

年轻带GC每一次 Eden区中存活的对象放到Survior1空间,并且Survior1和Survior2数据交换(默认交换15次)。Survior满了就移数据到老年代中,老年代满了就移动到元数据去中。多次DUll GC之后无果就OOM

GC 的过程

GC的过程

你可能感兴趣的:(堆)