什么时候触发GC?
JavaGC分为两种,一种是ScavengeGC,另一种是FullGC。前者只对年轻代进行回收,后者对整个堆进行回收(包括年轻代、老年代和持久代)。
当Eden申请内存失败时,触发ScavengeGC。
当老年代(Tenured)被写满、持久代(Perm)被写满、System.gc() 被显示调用以及上一次GC之后Heap各域分配策略出现变化时,触发FullGC。
GC有几种算法?
引用计数法(已弃用)、标记清除法、标记复制法(survivor区)、标记压缩法(老年代)、分代回收法。