JAVA GC 알고리즘 튜닝
처리량 관점 -> Parallel GC
클라이언트 응답시간 관점 -> CMS GC, G1 GC
Serial GC
32비트 JVM에서 돌아가는 싱글 쓰레드 어플리케이션에서 주로 사용한다. 실제론 거의 사용하지 않는다.
Parallel GC
Full GC 시 compact 작업이 수행되기에 GC 시간은 많이 든다. 하지만 처리량은 가장 많다.
CMS GC
compact 작업을 수행하지 않아 stop-the-world가 짧으나 자주 compaction이 발생할땐 오히려 시간이 더 걸릴 수 있다.
메모리 파편화의 단점
G1 GC
가장 성능이 우수한 GC로서 Java 9부터 default GC로 채택되었다.
JVM 메모리 설정
메모리가 클땐 GC 발생 횟수 감소, 그러나 GC 수행 시간이 증가
메모리가 클땐 GC 발생 횟수 증가, 그러나 GC 수행 시간이 감소
적절한 JVM 메모리를 찾는 모니터링 및 성능 테스트 작업이 필요하다.
JVM 메모리 튜닝 옵션
-Xms: 최소(기본) Heap Memory 을 조절
-Xmx: 최대 Heap Memory 을 조절
-XX:NewSize: New Generation의 시작 크기 지정
-XX:MaxNewSize: New Generation의 최대 크기 지정
-XX:PermSize: Permanent Generation의 최초 크기를 지정
-XX:MaxPermSize: Permanent Generation의 최대 크기를 지정
-XX:NewRatio: New, Old Generation의 비율 지정
-XX:SurvivorRatio: Survivor과 Eden 영역의 비율을 지정한다. ex) 3이라면 1:3
Survivor 크기가 크면 Full GC의 빈도를 줄일 수 있으나 Eden 영역이 줄기에 마이너 GC가 자주 발생
'언어 & 라이브러리 > 자바' 카테고리의 다른 글
[자바] ConcurrentHashMap이란 무엇인가? (0) | 2022.10.14 |
---|---|
[자바] Hashmap의 동작 원리에 대해 알아보자 (0) | 2022.10.14 |
[자바] String, StringBuilder, StringBuffer 차이점 정리 (0) | 2022.09.23 |
[자바] 자바 8에 새롭게 변화된 기능들 (2) | 2022.09.23 |
[자바] 자바를 사용하는 이유 (0) | 2022.09.23 |
댓글