Java로 만들어진 데몬 또는 Tomcat와 같이 Java로 구동되는 WAS를 운영환경에서 사용하다보면

사용자수의 증가 등의 부하로 인해 설정된 메모리를 초과하여 Application이 뒤지거나 처리속도가 늦어지는 경우가 있다.

 

자바8에 대한 오라클 문서에 의하면 

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html

 

JVM 옵션에 메모리 설정을 별도로 해주지 않고 default로 실행할 경우 

  • Initial heap size of 1/64 of physical memory up to 1 GB
  • Maximum heap size of 1/4 of physical memory up to 1 GB

기본 Heap size는 물리적 메모리의 1/64, 최대 Heap size는 물리적 메모리의 1/4로 설정 된다.

 

아래 명령어로 현재 JVM의 기본 Heap, Perm Size를 확인할 수 있다.

 

[Linux]

(jdk1.7 이하)
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'

 

(jdk1.8 이상)

java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|metaspacesize|version'

 
[Windows]

(jdk1.7 이하)
java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"

 

(jdk1.8 이상)

java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize metaspacesize version"

 

$ top

 

$ java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|metaspacesize|version'

필자의 경우 메모리는 약 12G이고 1/64인 약 192MB와 InitialHeapSize와 1/4인 약 3G인 MaxHeapSize가 기본값으로 잡혀있는 것을 확인할 수 있다.

 

+ Recent posts