Oracle Jdk 7부터는 G1 gc 알고리즘을 디폴트로 사용한다고 했었는데.. 인터넷에 이런 자료가 없어서 직접 테스트 해보니 디폴트는 기존의 generation model을 사용중이다. 따로 옵션을 넣어줘야 한다.

 

<서버 설치>

$ mkdir -p /home/www/jdk7

$ cd /home/www/jdk7

$ wget http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz

$ tar zxvf jdk-7-linux-i586.tar.gz

 


$ mkdir -p /home/www/tomcat

$ cd /home/www/tomcat

$ wget http://mirror.khlug.org/apache/tomcat/tomcat-7/v7.0.25/bin/apache-tomcat-7.0.25.zip

$ unzip apache-tomcat-7.0.25.zip

 

$ vi /home/www/.bashrc

$ export JAVA_HOME="/home/www/jdk7/jdk1.7.0"

$ source /home/www/.bashrc

 

$ cd /home/www/tomcat/apache-tomcat-7.0.25/bin

$ vi catalina.sh
(다음을 # --- 다음에 추가)
CATALINA_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

* bashrc에 넣어둘 수도 있음


$ ./catalina.sh start
Using CATALINA_BASE:   /home/www/tomcat/apache-tomcat-7.0.25
Using CATALINA_HOME:   /home/www/tomcat/apache-tomcat-7.0.25
Using CATALINA_TMPDIR: /home/www/tomcat/apache-tomcat-7.0.25/temp
Using JRE_HOME:        /home/www/jdk7/jdk1.7.0
Using CLASSPATH:       /home/www/tomcat/apache-tomcat-7.0.25/bin/bootstrap.jar:/home/www/tomcat/apache-tomcat-7.0.25/bin/tomcat-juli.jar

 

$ ps -ef | grep java
www      17189     1 97 11:42 pts/1    00:00:02 /home/www/jdk7/jdk1.7.0/bin/java -Djava.util.logging.config.file=/home/www/tomcat/apache-tomcat-7.0.25/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.endorsed.dirs=/home/www/tomcat/apache-tomcat-7.0.25/endorsed -classpath /home/www/tomcat/apache-tomcat-7.0.25/bin/bootstrap.jar:/home/www/tomcat/apache-tomcat-7.0.25/bin/tomcat-juli.jar -Dcatalina.base=/home/www/tomcat/apache-tomcat-7.0.25 -Dcatalina.home=/home/www/tomcat/apache-tomcat-7.0.25 -Djava.io.tmpdir=/home/www/tomcat/apache-tomcat-7.0.25/temp org.apache.catalina.startup.Bootstrap start

 

<로컬 환경에 jdk 설치구축>

http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html

jdk_home에 있는 bin/jconsole.exe 실행

 

<jconsole 이용>

ip와 포트을 입력해서 접속. 디폴트는 jdk 6와 동일하게 사용. 디폴트가 g1을 적용한 것이라고 했지만 young gen/old gen/perm gen 방식을 그대로 사용하는 ps marksweep, ps scavenge를 그대로 이요

 

 

G1 옵션 추가

$ vi catalina.sh
(다음을 # --- 다음에 추가)
CATALINA_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  -XX:+UseG1GC "  

 ( -XX:+UnlockExperimentalVMOptions  는 java 1.6 후반부 버전에서 G1 알고리즘을 쓸떄 사용가능하다. jdk7부터는 이 옵션없이 G1을 쓸 수 있다.)

jconsole로 확인하니, G1 Old gen, G1 young gen으로 뜨는지 확인했다.

chart상으로는 여러 영역이 보이지만, G1 자체가 young/old gen이 없기 때문에 이 정보는 나오지 않는다.








Posted by 김용환 '김용환'