Heart's Develop Inside (WP)

Heart's Develop Blog in WordPress.com

Java Performance Tuning white paper 정리 – (2) Default Garbage Collection Algorithms

with one comment

이전 포스트

@ Java Performance Tuning white paper 정리 – (1) The Java Heap

Default Garbage Collection Algorithms

Scavenge Garbage Collection (=Minor Collection)

Eden Space 가 가득 차면 발생한다
기본적으로 single thread 로 동작, 동작 시 객체와 상호작용하는 다른 thread 를 interrupt 하지 않는다
JDK 1.4 부터 병렬화 (parallelized) 가능하지만 신중하게 사용해야 한다 (Parallel Copy GC 에서 다룸)

Full Garbage Collection

Full GC 는 몇 가지 상황에서 발생한다

1. System.gc() 를 직접 호출

– SCJP 시험 문제에서는 호출은 가능하나 실제로 언제 실행될 지 보증해주진 않는다고 함 (호출 즉시 실행되지 않을 수 있음)
– -XX:+DisableExplicitGC 옵션을 명시하면 실행 방지 가능

2 RMI 프로토콜을 통해 System.gc() 를 직접 호출

– 위와 같은 성격을 가짐

3. Old / Perm Gen 이 가득 차는 경우 공간이 확장되어야 하고 이 때 Full GC 가 발생

– 초기 크기와 최대 크기를 동일하게 맞춰서 방지 가능
– Old Gen 이 최대치까지 가득 차는 것을 방지하는 방법
— -Xmx 값 증가
— Young Gen 을 tuning 해서 객체가 승격되기 전에 더 많이 내보낸다
— Concurrent Mark and Sweep (CMS) collector 사용
– Perm Gen 이 최대치까지 가득 차는 것을 방지하는 방법
— Perm Gen 공간을 충분히 확보하고 -Xnoclassgc 옵션 사용

4. minor GC 시에 promote 대상 객체들의 크기에 따라 Full GC 발생 가능

– promote 대상 크기가 tenured space 보다 크면 이동할 수 없게 됨 => Promotion Failure
– Promotion Failure 가 발생하면 Full GC 발생
– (?) -XX:+HandlePromotionFailure 가 켜져 있다면 minor GC 발생 (오역 혹은 내용이 틀리지 않았는지 확인 필요)

5. Concurrent Mark and Sweep GC 실행이 old generation 에 공간이 충분하지 않아 완료되지 못하는 경우 Full GC 발생

Full GC 는 heap 전체를 두 번 탐색하면서 참조되지 않는 객체들을 정리하는데, 이 과정 동안 GC 외의 Thread 가 모두 멈춘다 (Stop-the-world)
그래서, JVM 튜닝은 OOME 를 발생시키지 않으면서 Full GC 를 최소화하는 방향이 목적이 된다

Advertisements

Written by kabhwan

2013년 7월 17일 , 시간: 9:22 오전

Java에 게시됨

Tagged with , ,

One Response

Subscribe to comments with RSS.

  1. […] @ Java Performance Tuning white paper 정리 – (1) The Java Heap @ Java Performance Tuning white paper 정리 – (2) Default Garbage Collection Algorithms […]


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: