티스토리 뷰

WEB,WAS/WAS

UseAdaptiveSizePolicy

빼인트 2010. 2. 2. 23:00

 

개요

모사이트 시스템에서 gc로그를 확인하여 보면 total heap size가 동적으로 변동이 되고 있고 있었다. 자세히 따지면 new영역을 동적으로 관리하는 기능이다. 앞전에 이런기능이 있는걸로 알고 있었지만, 문제는 full gc가 너무 빈번하게 발생하였다.

그래서 7월9일에 New영역을 동적으로 변동시켜는 기능을 비활성화설정을 하고 나서 지켜본 결과 full gc가 거의 일어나지 않고 있음을 확인할 수 있었다.

 

그에 따라 UseAdaptiveSizePolicy 옵션에 대하여 알아보았다.

 

 Q. UseAdaptiveSizePolicy 가 무엇인가?

-XX:+UseAdaptiveSizePolicy

: Adaptive하게 New Generation의 크기가 Survivor Space의 크기를 변경할 것인지의 여부를 지정한다.

즉, New 영역의 크기를 동적으로 변동시켜준다.

가끔 사이트에 가서 st -m으로 확인하여 보면 지정한 Heap 사이즈와 다르게 total 사이즈가 st -m 을 수행할 때마다 바뀌는것을 본적이 있을 것이다. 이게 바로 -XX:+UseAdaptiveSizePolicy 옵션이 설정되어 New영역의 크기를 동적으로 변동시켜줘서 그렇게 나오는 것이다.

  

Q. 설정은 어떻게 되는가?

활성화 : -XX:+UseAdaptiveSizePolicy

비활성화 : -XX:-UseAdaptiveSizePolicy

 

 

Q. UseAdaptiveSizePolicy는 언제부터 나온것이며, Default는 어떤것인가?

1.

http://blog.naver.com/bart95?Redirect=Log&logNo=70004582860

위 주소를 확연하게 알수 있다.

JDK 1.4.1

JDK 1.5

위 두 버전에서 default로 적용되어 있다.

 

발췌내용

=============================================================

-XX:+UseAdaptiveSizePolicy

Instructs the VM to keep track of some statistics and resize both the young and the old (tenured) generation based on the collected data.

This feature is on by default when the option -XX:+UseParallelGC is used.

Supported by: 1.4.1, 1.5

=============================================================

 

2.

http://blog.naver.com/fharenheit?Redirect=Log&logNo=120017708010

위 주소의 4.2.1 내용을 발췌하여 보면

4.2.1 Adaptive Sizing

- Keeps Stats about GC times, allocation rates, and free space then sizes young and tenured generation to best fit the app.

- J2EE 1.4.1 and later

- -XX:+UseAdaptiveSizePolicy (on by default)

 

3.

http://blog.naver.com/moro514?Redirect=Log&logNo=140019999144

위 주소의 내용을 발췌하여 보면

-XX:+UseAdaptiveSizePolicy 옵션은

Parallel Scavenge Collector 파트에 포함되어 있으며 Default는 false이며

부가적인 설명엔

Automatically sizes the young generation and chooses an optimum survivor ratio to maximize performance.

라고 나와 있다.

 

Q. 어떤 경우 쓰면 좋은가?

아래주소의 SUN소식지의 의하면

http://kr.sun.com/korea/sun_info/2003/web_06/wirelessjava/wireless02.html

 

다음과 같은 내용이 있다.

성능을 위한 적응형 크기 조절

Parallel Scavenge Collector는 -XX:+UseAdaptiveSizePolicy를 사용할 때 성능이 더 좋다. 신세대의 크기를 자동으로 조정하고 최대 성능을 위한 최적화된 생존률을 설정해준다. Parallel Scavenge Collector는 항상 -XX:+UseAdaptiveSizePolicy 옵션을 사용하는 게 좋다. 예를 들면 다음과 같다.

=================================

java -server -Xms3072m -XX:+UseParallelGC \

-XX:+UseAdaptiveSizePolicy application

=================================

 

 개인적인 견해

-XX:+UseAdaptiveSizePolicy 옵션은 문서상으로도 Parallel Scavenge Collector 파트에 포함되어 있어 기본적인 Mark & Sweep 을 사용할 경우, New영역의 크기를 JVM이 알아서 조정하여 Full GC가 자주 발생할 우려가 있다. 따라서 Parallel Scavenge Collector 방식을 사용하지 않는 이상 -XX:-UseAdaptiveSizePolicy 옵션을 주어 비활성를 시켜야 할것으로 보인다. 게다가 JDK 1.4.1 과 1.5에서는 default로 활성화되어 있기 때문에 해당 JDK버전에서는 필히 비활성설정을 추가시켜줘야 할것으로 보인다.

 

 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함