Programming Language/Java

[Java] Garbage Collection(가비지 컬렉션)이란

Tenacity_Dev 2023. 4. 19. 16:39
728x90

Garbage Collection(가비지 컬렉션)이란

자바 가상 머신(JVM)에서 자동으로 객체를 제거하여 메모리를 해제하는 프로세스입니다.

 

자바에서 객체는 동적으로 할당되며, 개발자가 명식적으로 메모리를 해제하지 않으면 더 이상 사용하지 않는 객체가 메모리에 계속 남아있을 수 있습니다. 이러한 객체를 가바지라고 부릅니다.

 

가비지 컬렉션은 이러한 가비지 객체들을 자동으로 식별하고, 메모리를 자동으로 해제하여 프로그램 실행 중에 메모리 누수를 방지합니다.

 

자바에서 가비지 컬렉션은 일반적으로 개발자가 관여할 필요가 없으며, JVM이 자동으로 수행합니다. 그러나 가끔씩 가바지 컬렉션의 성능을 최적화하거나 세부적인 제어가 필요할 수도 있습니다.

 

장점

  1. 메모리 누수 방지 : 가비지 컬렉션은 더 이상 사용하지 않는 객체를 자동으로 제거하여 메모리 누수를 방지합니다. 이는 개발자가 명시적으로 메모리 관리를 수행하지 않아도 되므로, 코드 작성 및 유지보수에 대한 부담을 줄입니다.
  2. 자동 메모리 관리 : 가비지 컬렉션은 자동으로 메모리를 관리하기 때문에 개발자는 메모리 할당 및 해제에 대한 복잡한 로직을 작성할 필요가 없습니다.
  3. 안정성 및 예측 가능성 : 가비지 컬렉션은 안정적이며 예측 가능합니다. JVM이 자동으로 가비지 컬렉션을 수행하기 때문에, 이에 대한 세부적인 제어나 최적화는 필요하지 않습니다.
  4. 성능 향상 : 가비지 컬렉션은 성능 향상에도 기여합니다. 가비지 컬렉션을 사용하면 메모리 관리를 직접 수행하는 것보다 더 나은 성능을 얻을 수 있습니다. 
  5. 멀티스레딩 지원 : 자바 가비지 컬렉션은 멀티 스레딩 환경에서 안전하게 동작합니다. 이는 동시에 여러 스레드가 메모리를 사용하더라도 가비지 컬렉션에 문제가 발생하지 않음을 의미합니다.

 

단점

  1. 일시적인 성능 저하 : 가바지 컬렉션을 실행할 때, 프로그램 실행이 일시적으로 멈추는 경우가 있습니다. 이는 가비지 컬렉션을 수행하는 동안에는 프로그램이 실행이 일시적으로 중지되기 때문입니다. 이러한 일시적인 성능 저하는 대부분의 경우에는 무시할 정도로 작습니다.
  2. 예측 불가능한 성능 문제 : 가비지 컬렉션은 예측 가능하지만, 때로는 예측 불가능한 성능 문제가 발생할 수 있습니다. 가비지 컬렉션 실행시간이 프로그램 실행 시간에 영향을 미칠 수 있으므로, 특정 환경에서는 가바지 컬렉션이 예상보다 더 많은 시간을 소모할 수 있습니다.
  3. 자원 소비 : 가비지 컬렉션은 CPU 및 메모리 등의 시스템 자원을 소비합니다. 따라서 메모리 사용량이 많은 프로그램에서는 가비지 컬렉션이 자원 소비 문제를 야기할 수 있습니다.
  4. 메모리 관리의 한계 : 가비지 컬렉션은 메모리 관리를 자동화하는 방법 중 하나이지만, 완벽한 메모리 관리를 보장하지는 않습니다. 메모리 누수가 발생하거나 메모리 사용이 과도하게 높아지는 경우, 가비지 컬렉션만으로는 문제를 해결할 수 없습니다. 이러한 경우에는 개발자가 코드를 분석하고 수정해야합니다.

 

 

728x90