인프런 커뮤니티 질문&답변

bluewings109님의 프로필 이미지
bluewings109

작성한 질문수

스프링 핵심 원리 - 고급편

ThreadLocal - 소개

ThreadLocalMap.Entry 에 관한 질문입니다.

해결된 질문

작성

·

344

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요.

 

이번 챕터에서 소개된 ThreadLocal 에 대해 공부하면서 소스코드를 따라가다가 보니 ThreadLocalMap 과 ThreadLocalMap.Entry 까지 찾아보게 되었는데요 ^^;

ThreadLocalMap.Entry 가 WeakReference 를 상속받아 사용하는 이유가 별도로 있는지가 궁금합니다.

제가 생각해 보았을때..

만일 Entry가 WeakReference가 아닌 경우 Thread가 살아있는 한은 해당 ThreadLocal 객체에 Strong Reference가 존재하기 때문에

GC에 의한 메모리 회수가 이루어지지 않는 문제가 있어 그런것이 아닐까 싶습니다만,

 

일반적으로 ThreadLocal을 사용할 때에는

private static final ThreadLocal<MyClass> myClassHolder = new ThreadLocal<>();

과 같은 형태로 항상 ThreadLocal 인스턴스에 Strong Reference 가 존재하는 형태로 사용하므로

Entry가 WeakReference 를 상속받은 의미가 크게 없지 않나 하는 생각이 들어 질문드립니다.

답변 1

3

안녕하세요. bluewings109님, 공식 서포터즈 David입니다.

아래 글 참고 해보시겠어요?

https://stackoverflow.com/a/43894985/10709777

감사합니다.

bluewings109님의 프로필 이미지
bluewings109
질문자

감사합니다. 이해에 큰 도움이 되었습니다~

bluewings109님의 프로필 이미지
bluewings109

작성한 질문수

질문하기