Soft reference 에 관련해서 그마나 이해가 가도록 설명이 돼 있는 것 같다.
해당 링크에서 이야기하는 Soft reference 는 가비지 컬럭터가 사용하지 않는 객체들을 청소할 때 Soft reference object 도 같이 청소할지 말지 결정한다. 만약 메모리가 부족하다면 청소를 할 것이고, 그렇지 않다면 청소하지 않는다고 한다.
그렇기 때문에 이미지 캐시 같은 곳에 사용할 때 좋은 방법이라고 한다. 메모리에 들고 있지만 메모리가 부족해질 경우 GC 에서 제거하기 때문이다.
Soft reference 이야기가 나오면 Weak reference 이야기도 나오는데 Weak reference 는 GC 가 돌 때마다 청소가 된다고 한다. 우선 자세히 알아보지는 않고 이런게 있다~ 정도만 알아도 좋을 것 같다.
https://dzone.com/articles/weak-soft-and-phantom-references-in-java-and-why-they-matter
참고로 Soft reference 는 String 구현 코드에서 사용된다. StringCoding.class
에 deref()
메소드에서 사용되는데 StringDecoder
를 Soft reference 를 이용해 사용한다.
반응형