자바의 가비지 컬렉션 GC는 힙 영역의 더 이상 사용되지 않는 객체를 자동을 정리하는 메모리 관리 기법입니다. 여러 가지 GC 알고리즘이 있으며, 각각은 서로 다른 상황과 요구 사항에 최적화되어 있습니다.
이 GC는 매우 간단하며, 단일 스레드에서 실행되므로 애플리케이션의 응답 시간이 중요하지 않은 시스템에서 가장 잘 작동합니다. 이 GC는 작은 힙과 CPU가 제한적인 환경에서 주로 사용됩니다.
이 GC는 스루풋을 최적화하기 위해 설계되었습니다. 가비지 컬렉션 동안 모든 애플리케이션 스레드를 중지 (stop the world)하므로 GC의 처리 시간을 최소화하기 위해 여러 GC 스레드를 동시에 사용합니다. 이는 CPU 코어가 많은 서버 환경에 적합합니다.
이 GC는 애플리케이션의 응답 시간을 최적화하기 위해 설계되었습니다. CMS GC는 대부분의 가비지 컬렉션 작업을 애플리케이션 스레드가 동작하는 동안 병렬로 실행합니다. 하지만, 이 GC는 CPU 자원을 많이 사용하며, 메모리 단편화 문제가 발생할 수 있습니다.
이 GC는 힙을 여러 개의 동일한 크기의 영역으로 나누고, 각 영역을 독립적으로 관리하는 새로운 접근 방식을 제공합니다. 가비지가 가장 많이 쌓인 영역으로부터 처리하여 효율성을 높입니다. 이 GC는 힙 크기가 큰 시스템에서 잘 작동하며, 가비지 컬렉션중에 일어나느 애플리케이션 멈춤 시간을 줄이는 것이 목표입니다.
각 GC는 특정 환경과 요구 사항에 따라 성능이 달라질 수 있으므로, 애플리케이션의 성능 요구 사항과 실행 환경에 따라 적절한 GC를 선택해야 합니다.