Garbage Collector
개념
Garbage란 더이상 참조되지 않는 메모리를 의미한다.
Garbage Collection은 말그대로 더이상 참조되지 않는 메모리를 제거해주는 자동 메모리 관리의 한 형태이며, 프로그램의 성능에 영향을 미치게 된다.
Garbage Collection은 Heap 영역을 관리하게 된다.
만약 GC가 제대로 동작하지 못한다면, 더이상 사용되지 않는 객체가 메모리를 계속해서 점유하게 되고, 점점 메모리 공간이 부족해지면 OutOfMemoryError로 프로그램이 종료될 수 있을 것이다.!
자바는 언어 자체에서 가비지 컬렉션을 제공하여 C 언어와 다르게 프로그래머가 메모리를 직접 할당하고 해제하는 수동 관리의 부담을 덜어준다.
일반적으로 네트워크 소켓, DB 핸들, 윈도우, 파일 디스크립터 등과 같은 리소스는 GC 처리되지 않는다.
장점
메모리 직접 할당/해제할 필요 없다.
메모리 누수를 자동으로 관리해주어 완벽하진 않지만 상당 부분 처리가 가능하다.
댕글링 포인터 핸들링으로 인한 오버헤드가 발생하지 않는다.
비즈니스 로직에 좀 더 초점을 맞출 수 있다.
단점
성능을 직접 handling 하고 싶어도 제어할 수 없다.
모든 객체에 대한 생성/삭제를 추적하므로 원래의 앱 사용 리소스(CPU)보다 더 많은 성능이 필요하다.
프로그래머가 사용하지 않는 객체를 해제하는 전용 CPU 스케줄링을 직접 제어할 수 없다.
GC를 위한 메모리나 CPU가 더 사용될 수 있다.
일부 GC는 기능적으로 완벽하지 않아 런타임에 중지될 수도 있다.
Garbage Collector
자동 메모리 관리, 즉 Garbage Collection을 수행한다.
힙 메모리를 분석해 사용하지 않는 객체를 식별해 삭제하는 프로세스이다.
어디선가 참조중인(포인터 유지) 객체는 사용되고 있는 객체이고, 아무곳에서도 참조되지 않는 객체는 사용되지 않는 객체이기 때문에 이를 확인해 데이터를 제거하고 메모리를 회수해 공간을 확보해준다.
Last updated