垃圾回收是對堆內存里的沒有任何引用指向的對象進行回收
垃圾確定方式:1.引用計數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? 2.正向可達(使用這個)
垃圾回收算法:
1.標記-清除(Mark-Sweep)
? ? ? 此算法執(zhí)行分兩階段。第一階段從引用根節(jié)點開始標記所有被引用的對象,第二階段遍歷整個堆,把未標記的對象清除。此算法需要暫停整個應用,同時,會產生內存碎片
2.復制(Copying)
? ? ? 將內存分成兩份,每次GC都會重新整理使用的一半的內存區(qū)域,并賦值給另一半,效率提高,但是浪費了內存。
3.標記-整理(Mark-Compact)
? ? ? 結合了前兩個算法的優(yōu)點,第一步標記,第二步整理。
4.分代(Generational Collecting)
? ? ? 基于對對象生命周期分析后得出的垃圾回收算法。把對象分為年青代、年老代、持久代,對不同生命周期的對象使用不同的算法