垃圾回收
内存溢出原理:
区域划分为新生代和老年代,新生代又分为Eden区和s1、s0
新创建的对象先看Eden区有没有地方放, 有就放进行分配内存,没有就执行一次MinorGC(YoungGC),清理新生代的空间,把没用的对象清理掉,还在用的对象放在幸存者里面。
然后再看看能不能放下,如果还是放不下,就放到老年代里,老年代如果能放下就进行内存分配,如果还是放不下,就进行FULL GC(老年代和新生代里面的区域都进行清理),如果老年代能放下了就分配内存,如果还是放不下就报OOM内存溢出
Minor GC:非常快
FULL GC:非常慢
应用应该避免经常性发生FULL GC
幸存者区运行流程:
幸存者区分为from和to两个区域,每次清理都会把存活下来的对象放到对面,然后同时对象存活阈值+1,如果超过这个阈值就把他放到老年代里面