hyeonga_code

JVM_16_Non Stop-the-World, Incremental Garbage Collection 본문

JVM

JVM_16_Non Stop-the-World, Incremental Garbage Collection

hyeonga 2024. 5. 10. 10:59
반응형

 

Non Stop-the-World (Non-STW)

애플리케이션의 실행을 일시중지 하지 않거나 중지 시간을 최소화하여 GC를 수행하는 접근 방식입니다.
기존의 GC 기법에서 사용하는 STW 이벤트는 애플리케이션 스레드를 모두 일시 중지시키고 힙 전체를 안전하게 스캔하고 정리할 수 있도록 합니다.
그러나 애플리케이션의 반응성과 실시간 처리 능력에 부정적인 영향을 미칠 수 있습니다.


Non-STW는 실시간 시스템이나 높은 응답성이 요구되는 애플리케이션에 유리합니다.

 

 

특징

1. GC 작업을 애플리케이션의 스레드가 계속 실행되는 동안 병행하여 수행합니다.
이는 GC의 오버헤드가 애플리케이션의 메인 작업에 영향을 덜 미치도록 합니다.
2. 애플리케이션의 일시 중지 시간을 최소화하여 사용자 경험과 시스템의 반응성을 개선합니다.

지원 기술

1. Azul's C4 (Continuously Conccurent Compacting Collector)
Azul 시스템즈에서 개발한 C4 GC는 Java 애플리케이션을 위해 설계되었습니다.
실시간 GC를 제공합니다.
Read Barrier 기술을 사용하여 객체 접근 시 즉시 GC를 수행할 수 있으며 스레드가 거의 중단되지 않도록 합니다.

2. Shenandoah and ZGC (Z GC)
Open JDK 프로젝트의 일환으로 개발된 Shenandoah 와 ZGC는 저지연 GC를 목표로 합니다.
메모리 압축과 GC를 애플리케이션의 실행과 병행하여 수행하며 매우 짧은 STW 시간을 가집니다.

 

과제

1. 안전성 보장
동시에 실행되는 GC와 애플리케이션 스레드 사이의 동기화를 관리하는 것이 중요합니다.
데이터 일관성을 유지하고 GC 중 발생할 수 있는 오류를 방지하는 데 필수적입니다.

2. 성능 관리
동시성 GC는 CPU와 메모리 자원을 공유해야 하므로 애플리케이션의 성능에 영향을 줄 수 있습니다.
자원 사용을 최적화하고 성능 저하를 최소화하는 전략이 필요합니다.

 

 

Incremental Garbage Collection (점진적 GC)

전체 힙을 한 번에 정리하는 대신 작은 부분을 조금씩 정리하는 방법을 사용하는 방식입니다.
GC로 인한 애플리케이션의 일시 중지 시간을 줄여 사용자 경험과 시스템 반응성을 개선하는 것입니다.

 

특징

1. 전체 힙을 한 번에 스캔하고 정리하는 대신 힙을 작은 청크로 나누고 각 청크를 순차적으로 정리합니다.
일시 중지 시간을 단축합니다.

2. 보다 빈번하게 발생할 수 있으며 각 컬렉션은 더 짧은 시간 동안 실행됩니다.
장기간에 걸친 누적 일시 중지 시간이 줄어들 수 있음을 의미합니다.

3. 사용자 인터페이스가 있는 애플리케이션 또는 실시간 처리가 요구되는 시스템에서 응답성이 중요합니다.
사용자의 입력에 더 빠르게 반응할 수 있습니다.

 

 

과제

1. 오버헤드 관리
GC 자체의 오버헤드를 증가시킬 수 있습니다.
작업을 여러 부분으로 나누어 처리하므로 각 부분마다 초기화와 정리 작업이 필요하게 됩니다.

2. 동기화 문제
애플리케이션 스레드와 GC 간의 동기화를 관리하는 것이 더 복잡해질 수 있습니다.
GC가 작동하는 동안에도 애플리케이션 스레드가 실행되어 일관된 메모리 상태를 유지하는 것이 중요합니다.

 


- Java의 CMS(Concurrent Mark Sweep)
- Ruby의 Incremetal GC
반응형

'JVM' 카테고리의 다른 글

JVM_18_Thread 스레드  (0) 2024.05.11
JVM_17_GC 다시 알기 (수정사항)  (0) 2024.05.10
JVM_15_Stop the World 일시적인 정지  (0) 2024.05.10
JVM_14_Space Reclamation  (0) 2024.05.10
JVM_13_G1 GC 동작 과정  (0) 2024.05.10