[JAVA] Garbage Collection(가비지 컬렉션)

2024. 4. 13. 02:37CS

 Java의 가비지 컬렉션(Garbage Collection, GC)은 자동 메모리 관리의 한 형태로, 개발자가 직접 메모리를 관리하지 않아도 되게 해주는 매우 유용한 기능입니다. 이 기능은 사용되지 않는 메모리를 자동으로 회수하여, 메모리 누수(memory leak)를 방지하고 애플리케이션의 효율성을 유지하는 데 도움을 줍니다. Java의 가비지 컬렉션이 어떻게 작동하는지, 그리고 그것이 왜 중요한지에 대해 알아보겠습니다.

가비지 컬렉션이란?

가비지 컬렉션은 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 부분을 자동으로 찾아서 회수하는 과정입니다. Java에서는 개발자가 메모리 할당과 해제를 직접 관리하지 않아도 되기 때문에, 메모리 관리가 훨씬 간편해집니다.

작동 원리

Java의 가비지 컬렉션은 크게 두 가지 단계로 이루어집니다: '마킹'과 '삭제'.

  1. 마킹(Marking): 이 단계에서는 가비지 컬렉터가 사용 중인 객체와 사용되지 않는 객체를 식별합니다. 즉, 가비지 컬렉터는 루트 집합(root set)에서부터 시작하여 도달 가능한 객체를 탐색하고, 도달할 수 없는 객체를 가비지로 판단합니다.
  2. 삭제(Sweeping): 마킹 과정을 통해 식별된 가비지(사용되지 않는 객체)를 실제로 메모리에서 제거합니다. 이 과정에서 메모리가 재활용되어, 새로운 객체를 위한 공간이 생성됩니다.

가비지 컬렉션의 중요성

가비지 컬렉션은 메모리 관리를 자동화함으로써 여러 가지 이점을 제공합니다:

  • 메모리 누수 방지: 자동으로 불필요한 객체를 제거함으로써, 메모리 누수를 예방합니다.
  • 프로그램의 안정성 향상: 메모리가 효율적으로 관리되므로, 프로그램의 안정성이 향상됩니다.
  • 개발 생산성 향상: 개발자가 메모리 관리에 신경 쓰지 않아도 되기 때문에, 개발에 더 집중할 수 있습니다.

'CS' 카테고리의 다른 글

비트(bit)란?  (1) 2024.05.01
자바(JAVA) 컬렉션(Collection)  (1) 2024.04.19
메모리의 구조  (0) 2024.04.09
CPU 스케줄링  (0) 2024.04.04
프로세스(Process)와 스레드(Thread)  (0) 2024.04.01