Hi yoahn 개발블로그

java 가비지 컬렉션 본문

카테고리 없음

java 가비지 컬렉션

hi._.0seon 2025. 1. 30. 12:12
반응형

Java 가비지 컬렉션

더 이상 사용되지 않는 객체를 자동으로 메모리에서 회수하는 JVM의 핵심 기능 중 하나입니다.

즉, 개발자가 free() 같은 메모리 해제 코드를 작성하지 않아도, JVM이 자동으로 힙 메모리를 관리해 줍니다.

 

가비지 컬렉션 대상

참조되지 않는 객체는 수거 대상이 됨

 

가비지 컬렉션 방식

Mark And Sweep

Mark: Root Space 로부터 그래프 순회를 통해 연결된 객체들을 찾아 마킹

Sweep: 참조하고 있지 않은 객체들을 제거한다

Compact: Sweep 후에 분산된 객체들을 Heap 의 시작 주소로 모아 메모리가 할당된 부분을 압축

가비지 컬렉션 동작 과정

JVM 의 힙 영역

동적으로 데이터가 저장되는 공간으로, 가비지 컬렉션 대상 공간

Heap 영역의 설계 전제

1. 대부분의 객체는 일회성이다

2. 오래된 객체에서 새로운 객체로의 참조는 적게 발생한다.

 

보통 오래된 객체는 새로운 객체를 참조하지 않으므로, Young 영역만 수집해도 메모리 회수가 가능하다.(Minor GC)

 

효율적인 메모리 관리를 위한 메모리 구조

Young / Old Generation

Young 영역

새롭게 생성된 객체가 할당되는 곳

대부분의 객체가 빠르게 사라짐

Minor GC

 

Old 영역

Young 영역에서 오래 살아남은 객체들이 복사되는 곳

Young 영역보다 크고, 가비지는 적게 발생한다

Major GC, Full GC

Stop-the-World 가 발생하는 GC

영역이 커서 GC 오래 걸림

 

 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98GC-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

 

반응형
Comments