SoftReference — 소프트 참조 클래스

SoftReference — 소프트 참조 클래스

SoftReference는 가비지 컬렉터가 메모리 압박(memory demand)에 응답하여 해제할 수 있는 소프트 참조 객체예요. 소프트 참조는 메모리에 민감한 캐시(memory-sensitive cache)를 구현할 때 가장 많이 사용돼요. 가비지 컬렉터가 어떤 객체가 소프트 도달 가능(softly reachable)하다고 판단하면, 그 객체에 대한 모든 소프트 참조와 강한 참조 체인을 통해 그 객체에서 도달 가능한 다른 소프트 도달 가능 객체들의 소프트 참조를 원자적으로 해제하기로 선택할 수 있어요. 그와 동시에 또는 나중에, 참조 큐에 등록된 새로 해제된 소프트 참조들을 큐에 넣어요. 소프트 도달 가능한 객체에 대한 모든 소프트 참조는 가상 머신이 OutOfMemoryError를 던지기 전에 해제됨이 보장돼요. 그 외에는 소프트 참조가 언제 해제될지에 대한 제약은 없어요. 다만 구현은 방금 만들었거나 최근에 사용한 소프트 참조를 해제하는 쪽으로 치우치지 않도록 권장돼요.

출처: Java API Reference

본문

public SoftReference(T referent)

주어진 객체를 참조하는 새 소프트 참조를 만들어요. 참조 큐는 등록되지 않아요.

public SoftReference(T referent, ReferenceQueue<? super T> q)

주어진 객체를 참조하고 주어진 큐에 등록되는 새 소프트 참조를 만들어요.

public T get()

이 참조 객체의 참조 대상을 반환해요. 가비지 컬렉터가 메모리 압박으로 인해 이 참조를 이미 해제했다면 null을 반환해요.

더 알아보기 (Learn more)