1、跟蹤回收:跟蹤回收的方式獨立于程序,定期運行來檢查垃圾,需要較長時間的中斷。
2、标記清除:标記清除的方式需要對程序的對象進行兩次掃描,第一次從根(Root)開始掃描,被根引用了的對象标記為不是垃圾,不是垃圾的對象引用的對象同樣标記為不是垃圾,以此遞歸。所有不是垃圾的對象的引用都掃描完了之後。就進行第二次掃描,第一次掃描中沒有得到标記的對象就是垃圾了,對此進行回收。
3、複制收集:複制收集的方式隻需要對對象進行一次掃描。準備一個「新的空間」,從根開始,對對象進行掃,如果存在對這個對象的引用,就把它複制到「新空間中」。一次掃描結束之後,所有存在于「新空間」的對象就是所有的非垃圾對象。