System.WeakReference 는 왜 그리고 언제 사용하는 건가요?

책에 써있는 문구를 그대로 쓰자면, (써도 되는지는 모르겠지만…문제가 있다면 삭제하겠습니다.)

약한 참조는 가비지 수집기에서 개체를 정리할 수 있게 해주는 개체에 대한 참조다. 반대는 (그 개체에 대해) 수집을 방지하는 강한 참조다. 약한 참조는 유지하고 싶은 비용이 높은 개체를 캐시하는데 주로 유용하지만, 충분한 메모리 압력이 있다면 참조를 풀어주려 한다.
WeakReference는 IsAlive 속성을 갖지만, 해당 개체가 살아 있는 경우가 아니라 죽은 경우인지 결정하는 데만 유용하다. IsAlive를 검사했는데 값이 true라면, IsAlive 속성을 검사한 후 해당 개체를 수집할 수 있는 가비지 수집기와 경쟁에 있는 것이다. 개체 참조를 소유한 강한 참조로 복사하고 거기서 확인하자.
WeakReference를 사용하는 아주 좋은 방법은 개체가 강한 참조에 잡혀 시작할 수 있는 캐시 부분이다. 이는 사용되지 않은 충분한 시간이 지난 후 개체가 강등되어 궁극적으로 사라질 수 있는 약한 참조가 될 수 있다.

요정도만 써있습니다.

1개의 좋아요