기타
Memory Analyzer - Unreachable object 분석하기
Better than alone
2021. 11. 15. 15:23
Java Garbage Collector는 어떤 객체에 유효한 참조가 있다면 'reachable', 없으면 'unreachable' 로 구별한다.
따라서 참조가 없는 unreachable object에 대해서 GC를 수행함.
보통, Memory leak이 발생하는 경우에는 문제가 되는 객체에 대한 참조가 살아 있기 때문에 dump를 뜬 후, Memory Analyzer로 확인이 가능하다. (이 경우 reachable object에 대한 확인 필요)
하지만, 비정상적으로 Minor GC가 잦게 발생한다면, GC 대상이 되는 unreachable object에 대한 확인이 필요하다.
이 역시 Memory Analyzer로 확인이 가능하다.
(정상적으로 GC가 발생하는 경우 어떤 객체가 GC 대상인지는 알 필요가 없기 때문에, 이 기능이 default로는 비활성화 되어 있다.)
이클립스 Memory Analyzer를 사용하는 경우 아래 옵션을 활성화 해줘야한다.
unreachable object 확인하기
- Close the snapshot
- Select the heap dump using Window > Heap Dump History right-click, Delete Index Files
- Select 'Keep unreachable objects' using Window > Preferences > Memory Analyzer
- Reopen the heap dump, which will reparse the heap dump.
- Select the Java Basics > GC Roots query.
- Select the 'Unreachable Objects' row.
- Run the 'Show Retained Set' query on that row.
반응형