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

rere님의 프로필 이미지
rere

작성한 질문수

이펙티브 자바 완벽 공략 1부

아이템 7. 완벽 공략 20 - WeakHashMap

weakhashmap과 관련해서 질문이 있습니다.

작성

·

292

0

강사님 안녕하세요. 좋은 강의 감사드립니다.

weakhashmap과 관련해서 weakreference를 키로 하여 강한 참조가 없어질때 gc의 대상이 되는 것이고 이 경우 해당 엔트리를 map에서 제거해서 메모리 누수를 방지하는 자료구조라고 이해했는데요.

1. 결국엔 해당 객체에 대한 weakReference나 strongReference도 메모리에서 해제가 되어야 할 것 같은데 이는 gc와 관련된 메커니즘인 것인지 아니면 referenceQueue와 같은 자원 반납 과정에서 일어나는 것인지 궁금합니다..!!

 

2. jvm 메모리 구조에는 method area의 runtime constant pool과 heap의 string constant pool이 존재하는 것으로 알고 있는데 heap은 gc의 대상이 되니깐 문자열 리터럴을 키로 사용하면 remove되고 수 리터럴을 키로 사용하면 map에서 remove되지 않는 것인지 궁금합니다!!

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

1. 메모리를 정리하는 과정은 gc에 의해 처리가 됩니다. gc의 과정 중에 레퍼런스 큐를 정리하는 과정도 발생하는 것이구요.

2. 네 맞습니다. 리터럴이 남아있어서 맵에서 제거되지 않습니다.

rere님의 프로필 이미지
rere

작성한 질문수

질문하기