개발/Java

[Java] Soft reference object

hojak99 2019. 4. 4. 23:15

Soft reference 에 관련해서 그마나 이해가 가도록 설명이 돼 있는 것 같다.

해당 링크에서 이야기하는 Soft reference 는 가비지 컬럭터가 사용하지 않는 객체들을 청소할 때 Soft reference object 도 같이 청소할지 말지 결정한다. 만약 메모리가 부족하다면 청소를 할 것이고, 그렇지 않다면 청소하지 않는다고 한다.

그렇기 때문에 이미지 캐시 같은 곳에 사용할 때 좋은 방법이라고 한다. 메모리에 들고 있지만 메모리가 부족해질 경우 GC 에서 제거하기 때문이다.

Soft reference 이야기가 나오면 Weak reference 이야기도 나오는데 Weak reference 는 GC 가 돌 때마다 청소가 된다고 한다. 우선 자세히 알아보지는 않고 이런게 있다~ 정도만 알아도 좋을 것 같다.

https://stackoverflow.com/questions/299659/whats-the-difference-between-softreference-and-weakreference-in-java

 

What's the difference between SoftReference and WeakReference in Java?

What's the difference between java.lang.ref.WeakReference and java.lang.ref.SoftReference ?

stackoverflow.com

https://dzone.com/articles/weak-soft-and-phantom-references-in-java-and-why-they-matter

 

Weak, Soft, and Phantom References in Java (and Why They Matter) - DZone Java

See why weak, soft, and phantom references in Java are important, their effects on GC, memory allocation, and the best use cases for each type of reference.

dzone.com


참고로 Soft reference 는 String 구현 코드에서 사용된다. StringCoding.classderef() 메소드에서 사용되는데 StringDecoder 를 Soft reference 를 이용해 사용한다.

반응형