翻譯自:https://dzone.com/articles/java-garbage-collection-2
使用new運算符動態創建的對象將自動釋放。實現此目的的技術稱爲垃圾收集。它的工作方式如下:當不存在對對象的引用時,假定不再需要該對象,並且可以回收該對象佔用的內存。
自動垃圾收集如何工作?
自動垃圾收集的工作原理是查看堆內存,識別哪些對象被引用,哪些不被引用,以及刪除未使用的對象。這被廣泛稱爲“ 標記和掃描算法”。
解除分配內存的過程由垃圾收集器自動處理,分兩步:
第1步:標記
這是垃圾回收器標識正在使用的內存片段和未使用的內存片段並標記不再引用的對象的第一步。
第2步:刪除
在此步驟中,將刪除步驟1中不再引用的所有標記對象並回收內存。
這可以用兩種類型完成:
2a)正常刪除
在此刪除中,內存分配器保存對可以分配新對象的可用空間塊的引用,如下圖所示。
2b)壓縮刪除
在此過程中,除了刪除未引用的對象之外,不僅僅是從內存中刪除對象,還會壓縮剩餘的對象以進一步提高性能。通過將引用的對象移動到一起,這使得新的內存分配更加容易和快速。
來源: Oracle Java Docs
有關垃圾收集如何工作的更多信息,請參閱此 Oracle Java Docs。