* Sun Microsystyems의 자바 HotSpot VM은 힙을 세 개의 영역으로 나누고 있다.
 힙의 세 영역은 다음과 같다:
 1) Permanent space: JVM 클래스와 메소드 개체를 위해 쓰인다.
 2) Old object space: 만들어진지 좀 된 개체들을 위해 쓰인다.
 3) New(young) object space: 새로 생성된 개체들을 위해 쓰인다.

* Heap layout 할당에 영향을 주는 스위치들
명령행 스위치 설명
-------------|-------
-Xms=[n]  최소 heap size
-Xmx=[n]  최대 heap size
-XX:PermSize=[n]  최소 perm size
-XX:MaxPermSize=[n]  최대 perm size
-XX:NewSize=[n]  최소 new size
-XX:MaxNewSize=[n]  최대 new size
-XX:SurvivorRatio=[n]  New/survivor 영역 비율 
-XX:newratio=[n]  Old/new 영역 비율. HotSpot 클라이언트 VM은 8, HotSpot 서버 VM은 2.
-XX:TargetSurvivorRatio=[n]  GC동안 비울 생존자 수용 가능량 퍼센티지 (capacity percentage.) 초기값은 50%

* New Generation 메모리 할당 공식
   Eden = NewSize - ((NewSize/(SurvivorRatio + 2)) * 2)
   From space = (NewSize - Eden)/2
   To space = (NewSize - Eden)/2
* Old Generation 메모리 할당 공식
   Old = Xmx - MaxNewSize

* GC한 상태의 Heap메모리 정보출력
jdk1.4에서 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC 

* 정적페이지가 많을 때
-Xms418m -Xmx418m 
-XX:PermSize=1024m 
-XX:MaxPermSize=1024m 
-XX:NewSize=290m 
-XX:MaxNewSize=290m 
-XX:SurvivorRatio=3 

* 동적인 페이지가 많을 때
-Xms1024m -Xmx1024m 
-XX:PermSize=128m 
-XX:MaxPermSize=128m 
-XX:NewSize=800m 
-XX:MaxNewSize=800m 
-XX:SurvivorRatio=4 

-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3 

set CATALINA_OPTS=-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3


---------------------------------------------------------------------------



kol:/ero/bin>cat tomcat_startup.sh
#!/usr/bin/ksh
 
. /ero/bin/ero.env
 
export CATALINA_OPTS="-server -Xms4096M -Xmx4096M -XX:PermSize=64M -XX:MaxPermSize=64M -Xnoclassgc -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"
 
# -Xms4096M                             : 최소 heap 크기
# -Xmx4096M                             : 최대 heap 크기
#                                      
# -XX:PermSize=64M                      : 코드영역(class로딩장소) 최소값
# -XX:MaxPermSize=64M                   : ..                      최대값
# -Xnoclassgc                           : ..                      에 대해 GC를 수행하지 않음
#                                      
# -XX:NewSize=1024M                     : new 영역 최소 1G 확보
# -XX:MaxNewSize=1024M                  : ..       최대  ..
#                                      
# -XX:+UseParNewGC                      : 멈춤을 최소로하는 new영역 GC 방법사용
# -XX:ParallelGCThreads=4               : GC를 동시 수행하는  thread갯수
#                                      
# -XX:+UseConcMarkSweepGC               : 멈춤을 최소로하는 old 영역 GC 방법사용
# -XX:CMSInitiatingOccupancyFraction=50 : old영역이 50% 이상 사용되면 GC 수행

2007/10/17 09:17 2007/10/17 09:17

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다