JVM은 가비지 컬렉션을 통해 자동으로 메모리 할당 및 해제를 처리하며, 개발자가 명시적으로 메모리 관리를 하지 않아도 됩니다. 이를 통해 메모리 누수 및 다른 메모리 관련 오류를 방지하고 프로그램의 안정성을 향상시킵니다.
JVM의 Garbage Collection은 자동으로 수행되며 개발자가 직접 제어할 필요가 없습니다. 그러나 메모리 관리와 성능 튜닝을 위해 GC 로그 및 관련 도구를 사용하여 가비지 컬렉션 동작을 분석하는 것이 중요합니다. 또한 특정 애플리케이션의 요구 사항에 따라 GC 알고리즘을 선택하고 구성할 수 있습니다.

Heap 메모리: Java 애플리케이션에서 객체가 동적으로 할당되는 공간입니다. Heap 메모리는 크게 Young Generation과 Old Generation 두 부분으로 나뉩니다.
Young Generation(이하 YG): 새로 생성된 객체들이 할당되는 영역입니다. 이 영역에서는 빈번한 Minor GC(가비지 컬렉션)이 발생합니다. YG는 다시 Eden 영역과 두 개의 Survivor 영역(S0 및 S1)으로 나뉩니다.
Old Generation(이하 OG): YG에서 가비지 컬렉션을 여러 번 거치고 살아남은 객체들이 이동하는 영역입니다. 더 오랜 시간 동안 살아 있는 객체들이 저장됩니다. OG에서 Major GC(가비지 컬렉션)이 발생하게 된다면 Stop-the-world가 발생하게 됩니다.
GC를 실행하는 Thread를 제외한 모든 Application의 Thread가 GC 종료 전까지 일시정지 하게 됩니다. Application의 모든 Thread가 GC 종료 전까지 일시정지되기 때문에 튜닝을 해 이 시간을 단축합니다.
Minor GC는 주로 Young Generation라고 불리는 메모리 영역에서 수행되며, 새로 생성된 객체들을 관리합니다. Young Generation은 Eden 영역과 Survivor 영역(s0, s1)으로 나뉘며, 객체들은 처음에 Eden 영역에 할당되고, 일정 주기마다 살아남은 객체는 Survivor 영역(s0, s1)을 번갈아가며 이동하며 Compact 과정을 거치고 최종적으로 Old Generation으로 이동하게 됩니다.
Mark: 더 이상 참조되지 않는 객체를 식별하고 표시합니다. (Reachable(유효함)과 Unreachable(유효하지 않음)을 근거로 대상 식별)
Sweep: 표시된 가비지 객체들을 실제로 메모리에서 제거합니다.
Compact: 메모리 공간을 최적화하고, Mark & Sweep 동작으로 객체가 제거되고 Slack(비어있는)된 공간을 최적화합니다.
Serial GC :
단일 스레드, 소규모 환경을 위한 간단한 GC
Parallel GC :
Java 8 기본 옵션, 멀티스레드 기반 작동, Low-pause (응용 프로그램 중단 최소화), Throughput(Mark & Compact 알고리즘 기반으로 신속성 최대화)
G1 GC (Gabage First GC) :
G1 GC는 개념적으로 그들이 존재하나 일정 크기의 논리적 단위인 region으로 구분하고 있다.

reference :
사용되지 않는 객체들이 무분별하게 사용되지 않도록 습관을 들여야겠네요! 잘 읽고 갑니다.
다음에 GC 모니터링해서 튜닝하는것도 올려주세요 궁금해용