1. SoftReference:當 GC 因為記憶體需求而觸發時會被清除。常用來實作對記憶體敏感的快取。
  2. WeakReference:不會阻止物件被回收。常用來實作 canonicalizing mapping(只對應仍可達的物件實例)。
  3. PhantomReference:在物件被判定為可回收之後才會被加入佇列。不會被 GC 自動清除。透過 phantom reference 參照的物件,在 phantom reference 被清除之前,不會被 GC 回收。