가비지 컬렉션(Garbage Collection)이란?
자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의
Heep 영역에서 동적으로 할당했던 메모리 중
필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말합니다.
C/C++ 언어에서는 가비지 컬렉션이 없어 프로그래머가
수동으로 메모리 할당과 해제를 일일이 해줘야한다.
반면 Java에서는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에
Java 프로세스가 한정된 메모리를 효율적으로 사용할수 있게하고
개발자 입장에서 메모리 관리, 메모리 누수 문제를 관리하지 않고 개발할 수 있다.
가비지 컬렉션 단점
자동으로 처리해준다 해도 메모리가 언제 해제되는지 정확하게 알 수 없어 제어하기 힘들다.
가비지 컬렉션이 동작하는 동안에는 다른 동작을 멈추기 때문에 오버헤드가 발생되는 문제점이 있다.
전문 용어로 Stop-The-World 라 말한다.
STW(Stop-The-World)
GC를 수행하기 위해 JVM이 프로그램 실행을 멈추는 현상을 의미
GC가 작동하는 동안 GC관련 Thread를 제외한
모든 Thread는 멈추게 되어 서비스 이용해 차질이 생길 수 있다.
따라서 이 시간을 최소화 시키는 것이 쟁점이다.
이런 점으로 GC가 너무 자주 실행되면 소프트웨어 성능 하락의 문제가 되기도 하다.
예로 익스플로러는 가비지 컬렉션을 너무 자주 실행하여 성능 문제를 일으키는 것으로 악명이 높았다.
이 특성에 따라 실시간 성이 매우 강조되는 프로그램일 경우 가비지 컬렉션에게
메모리를 맞기는 것은 맞지 않을 수 있다.
어플리케이션의 사용성을 유지하면서 효율적이게 GC를 실행하는 최적화 작업이 개발자의 숙제가 될 수 있다.
GC를 잘 정리된 유튜브 영상을 첨부해둔다.
728x90
'추가 공부 > Java' 카테고리의 다른 글
[Java] Stack 사용방법 (0) | 2024.11.19 |
---|---|
[Java] Final keyword (2) | 2024.11.10 |
[JAVA] Generic (1) | 2024.11.09 |
[Java] Collection Framework (0) | 2024.11.07 |