WeakReference — 약한 참조 클래스
WeakReference — 약한 참조 클래스
WeakReference는 참조 대상이 finalizable 상태가 되고, 파이널라이즈되고, 회수되는 것을 막지 않는 약한 참조 객체예요. 약한 참조는 표준화 매핑(canonicalizing mapping)을 구현할 때 가장 많이 사용돼요. 가비지 컬렉터가 어떤 객체가 약하게 도달 가능(weakly reachable)하다고 판단하면, 그 객체에 대한 모든 약한 참조와 강한 참조 및 소프트 참조 체인을 통해 그 객체에서 도달 가능한 다른 약하게 도달 가능 객체들의 약한 참조를 원자적으로 해제해요. 그와 동시에 이전에 약하게 도달 가능했던 객체들을 모두 finalizable 상태로 선언해요. 그와 동시에 또는 나중에, 참조 큐에 등록된 새로 해제된 약한 참조들을 큐에 넣어요.
본문
public WeakReference(T referent)
주어진 객체를 참조하는 새 약한 참조를 만들어요. 참조 큐는 등록되지 않아요.
public WeakReference(T referent, ReferenceQueue<? super T> q)
주어진 객체를 참조하고 주어진 큐에 등록되는 새 약한 참조를 만들어요.
약한 참조는 객체가 더 이상 강하게 도달 가능하지 않게 되면 다음 가비지 컬렉션에서 바로 회수되기를 허용해요. 따라서 WeakHashMap처럼 키가 더 이상 사용되지 않으면 자동으로 항목이 사라지는 컬렉션을 구현하는 데 적합해요. WeakReference.get()은 다른 참조 객체와 마찬가지로 참조 대상을 반환하며, 이미 해제되었다면 null을 반환해요.