Java를 사용하면 메모리를 직접 해제하지 않아도 됩니다. JVM의 GC가 더 이상 사용되지 않는 객체를 찾아 정리해주기 때문입니다.
그래서 Java에서는 메모리 누수가 C/C++ 같은 언어보다 덜 발생한다고 생각하기 쉽습니다. 하지만 실제 개발과 운영에서는 Java 애플리케이션에서도 메모리 누수가 발생합니다.
이유는 단순합니다. GC는 참조가 끊긴 객체를 회수할 수 있을 뿐, 애플리케이션이 계속 참조하고 있는 객체를 임의로 정리하지 않습니다.
메모리 누수를 이해하려면 GC가 어떤 기준으로 객체를 회수하는지부터 봐야 합니다. 1. GC는 무엇인가 GC는 Garbage Collector의 약자입니다.
JVM Heap 영역에서 더 이상 사용할 수 없는 객체를 찾아 회수하는 메모리 관리 장치입니다. Java 객체는 대부분 Heap에 생성됩니다.
User user = new User(); new User()로 생성된 객체는 Heap에 저장되고, user 변수는 그 객체를 참조합니다. 메서드...
원문 링크 : JVM GC가 있어도 메모리 누수는 발생한다