상세 컨텐츠

본문 제목

가비지 컬렉터 (Serial GC, Parallel GC)

기록 - 프로그래밍/Java

by wjjun 2024. 1. 6. 00:14

본문

 

힙 사이즈 설정

Switch 설명
-Xms JVM 실행될때 초기 Heap 크기 설정입니다.
-Xmx 최대 Heap 크기 설정입니다.
-Xmn Young Generation 크기를 설정합니다.
-XX:PermSize Permanent Generation 영역의 초기 크기를 설정합니다.
-XX:MaxPermSize Permanent Generation 영역의 최대 크기를 설정합니다.

 

 

Serial GC 특징

Serial GC는 JVM GC 알고리즘 중 한 가지 입니다. 단일 스레드에서 실행되는 가비지 컬렉션입니다.

Serial GC는 하나의 스레드에서만 사용이 가능하므로 다른 스레드와의 경쟁이 없어 단순하게 구현되어 오버헤드가 적은 편입니다.

Stop the World Event 가비지 컬렉션이 수행되면 애플리케이션 스레드가 일시적으로 멈추는 Stop the World 이벤트가 발생됩니다. 이것은 일시적 지연이 발생할 수 있으며 실시간 프로그램에는 적절하지 않을 수 있습니다. 간단하고 예측이 가능한 동작으로된 알고리즘을 이용하여 가비지 컬렉션이 실행되어 디버깅과 튜닝이 적은 편입니다. 주로 단일 스레드 애플리케이션이나 규모가 작은 곳에 사용되며 서버 환경에서 테스트나 디버깅을 위한 용도로 주로 이용됩니다.

 

 

Serial GC 사용방법

-XX:+UseSerialGC

java -Xmx12m -Xms3m -Xmnlm -XX:PermSize=20, -XX:MaxPermSize=20m -XX:+UseSerialGC -jar c:/javademo/Java2D/Java2demo.jar

 

 

Parallel GC 특징

Young, Old Generation 세대로 나누어져 가비지 컬렉션이 수행됩니다. Young 세대에서는 주로 Minor GC가 발생하며 Old 세대에서는 Major GC나 Full GC가 발생할 수 있습니다.

병렬 GC는 멀티스레드를 사용하여 가비지 컬렉션을 효율적으로 수행하기 때문에 일반적으로 애플리케이션의 처리량을 높일 수 있습니다. JVM을 실행할 때 옵션을 통해 Young, Old Generation의 크기와 스레드 갯수 조정을 포함하고 있습니다.

 

n개의 CPU가 있는 곳에서는 병렬로 가비지 컬렉션이 수행되어 n개의 가비지 컬렉션 스레드가 사용됩니다. 가비지 컬렉션 스레드 갯수는 명령줄로 옵션으로 제어가 가능합니다.

-XX:ParallelGCThreads={number}

 

단일 CPU 사용중에도 병렬 가비지 컬렉션이 수행되는 경우 기본 가비지 컬렉션이 수행됩니다. host가 하나의 CPU 코어만 갖고 있더라도 JVM은 병렬 가비지 컬렉터 대신 기본 가비지 컬렉션을 사용한다는 의미입니다. 2개의 CPU가 있는 host에서는 일반적으로 병렬 가비지 컬렉션이 기본 가비지 컬렉션과 유사한 성능을 보여주며, 두 개 이상의 CPU를 가진 호스트에서는 Young Generation 가비지 컬렉션이 일시 중지 시간이 줄어들 것을 기대합니다. 병렬 가비지 컬렉션은 두 가지 유형으로 제공됩니다. 구체적인 내용은 문맥과 Java의 버전과 환경 설정마다 다른 유형으로 가비지 컬렉션이 수행될 수 있습니다.

 

 

Parallel GC 사용방법

-XX:+UseParallelGC

다중 스레드 Young Generation과 단일 스레드 Old Generation 컬렉션을 수행할 수 있습니다. Old 세대의 단일 스레드 압축을 수행합니다.

 

-XX:+UseParallelOldGC

가비지 컬렉션이 Young, Old 세대 모두 다중 스레드로 동작하는 다중 스레드 컬렉션을 수행합니다. HotSpot JVM에서 압축은 주로 Old Generation에서만 수행됩니다. HotSpot에서는 Young Generation를 Copy Collector로 간주하여 압축을 필요로 하지 않습니다.

압축의 의미는 Generation 영역내 객체 사이에 빈 공간이 없도록 객체를 이동하는 작업을 의미합니다. 

 

 

 

Java Garbage Collection Basics

Java Overview Java is a programming language and computing platform first released by Sun Microsystems in 1995. It is the underlying technology that powers Java programs including utilities, games, and business applications. Java runs on more than 850 mill

www.oracle.com

 

'기록 - 프로그래밍 > Java' 카테고리의 다른 글

열거 타입 정리 (JAVA)  (1) 2024.01.08
JVM 튜닝 방법 (Jrokit)  (1) 2024.01.07
JVM 힙(Heap), 가비지컬렉션(Garbage Collection)  (0) 2024.01.05
JVM 메소드 영역 (Constant_pool)  (0) 2024.01.04
자바 타입 정리  (0) 2024.01.03

관련글 더보기

댓글 영역