Skip to content

아이템 7. 다 쓴 객체 참조를 해제하라 #15

Answered by chikeem90
JoisFe asked this question in 3. 과제
Discussion options

You must be logged in to vote

캐시 내용에서 WeakHashMap이 나오는데,

private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V> {

이렇게 WeakReference를 상속하고 있네요.
Reference에 관련된 내용은 여기 참고하면 좋아요 (내용이 상당히 복잡하긴 합니다)
https://d2.naver.com/helloworld/329631

내용을 간략히 정리하자면

WeakReference<Sample> wr = new WeakReference<Sample>( new Sample());  
Sample ex = wr.get();  
...
ex = null;  

Sample 인스턴스를 WeakReference로 감싸서 생성하고, Sample 인스턴스에 대한 strong reference를 끊어버리면 Sample 인스턴스는 weak reference를 통해서만 참조하는 형태인 weakly reachable 인스턴스가 될 것이고,, GC에서 weakly reachable 인스턴스로 판단하면 Sample 인스턴스에 대한 참조를 null로 만들어서 (GC 대상으로 만들어서) GC에 의해 회수되도록 한다고 하네요.

Replies: 3 comments 3 replies

Comment options

You must be logged in to vote
2 replies
@JoisFe
Comment options

JoisFe Dec 17, 2022
Maintainer Author

@chikeem90
Comment options

Comment options

You must be logged in to vote
1 reply
@JoisFe
Comment options

JoisFe Dec 21, 2022
Maintainer Author

Answer selected by JoisFe
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2장 객체 생성과 파괴 이펙티브 자바 2장 (객체 생성과 파괴)
4 participants