실전 관점에서 왜 Java 애플리케이션이 “메모리 누수”로 느려질 수 있는지 살펴봅니다: 잊힌 리스너(
addActionListener/
removeActionListener), 영원히 남는 정적 컬렉션, 닫지 않은 리소스(팁:
try-with-resources), 참조를 붙들고 있는 익명/내부 클래스, 그리고
System.gc() 남용. GC 로그 읽기(
-Xlog:gc*,
-XX:+PrintGCDetails), 수집기 선택,
WeakHashMap 기반 캐시 구축, 모니터링(
jvisualvm,
jconsole), 힙 덤프 분석,
-Xmx/
-Xms 올바른 설정까지 다룹니다. 마지막에는 실제 누수 사례와 해결 방법을 소개합니다.