GC类型
Minor GC从年轻代空间(包括 Eden 和 Survivor 区域)回收内存。
Major GC 是清理永久代。
Full GC 是清理整个堆空间—包括年轻代和永久代。
oom发生在老年代
GC算法
标记-清除
(1)首先标记出所需要回收的对象(引用计数法和可达性分析,两次标过程);
(2)在标记完成后统一回收所有被标记的对象
(3)效率问题:标记和清除两个过程的效率不高;
(4)空间问题:标记清除后会产生大量不连续的内存碎片
复制
(1)大小相等的两块内存,每次只使用其中的一块;
(2)当这一块用完了,就将还存活的对象复制到另一块上;
(3)然后再把已使用的内存空间清理掉。
(4)效率高,简单。
(5)浪费空间。
标记-整理
(1)首先标记处所需要回收的对象;
(2)不直接对可回收对象进行清理,让所有存活的对象都向一端移动;
(3)直接清理掉端边界以外的内存。
(4)解决了内存碎片。
(5)效率低。
内存参数
-Xms JVM初始分配的堆内存 ,默认是物理内存的1/64
-Xmx JVM最大允许分配的堆内存, 默认是物理内存的1/4
-XX:PermSize JVM初始分配的永久代大小, 默认是物理内存的1/64