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