반응형
- -Xms<size>
- Java Heap의 최초 크기를 지정합니다.
- Java Heap은 -Xms 옵션으로 지정한 크기로 시작하며, 최대 -Xmx 옵션으로 지정한 크기만큼 커집니다.
- Java8에서 이 옵션은 Deprecated 되었습니다.
- -Xmx
- Java Heap의 최대 크기(Maximum size)를 지정합니다.
- -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx 옵션으로 지정한 만큼 커집니다.
- Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장합니다. 그 이유는 크기의 동적인 변경에 의한 오버헤드를 최소화하기 위해서입니다.
- Java8에서 이 옵션은 Deprecated 되었습니다.
- -XX:PermSize=<size>
- Permanent Generation의 최초 크기를 지정합니다. Permanent Geeneration의 최대 크기는 MaxPermSize 옵션에 의해 지정됩니다.
- 많은 수의 Class를 로딩하는 Application은 Permanent Generation을 필요로 하며, Permanent Generation의 크기가 작아서 Class를 로딩하지 못하면 Out of Memory Error가 발생합니다.
- -XX:MaxPermSize=<size>
- Permanent Generation의 최대 크기를 지정합니다. Permanent Generation의 시작 크기는 PermSize 옵션에 의해 지정됩니다.
- 많은 수의 Class를 로딩하는 Application은 PermSize와 MaxPermSize 옵션을 이용해 Permanent Generation의 크기를 크게 해주는 것이 좋습니다.
- Permanent Generation의 크기가 작아서 Class를 로딩하지 못하면 Out of Memory Error가 발생합니다.
- -XX:NewSize<size>
- 객체가 생성되어 저장되는 초기 공간의 Size로 Eden+Survivor 영역
- -XX:MaxMetaspaceSize
- Perm 영역은 Class의 Meta 정보, Method의 Meta 정보, Static 변수와 상수 정보 저장되는 공간. 흔히 메타데이터 저장 영역이라고 합니다.
- 이 영역은 Java 8부터는 Native memory 영역으로 이동하여 Metaspace 영역으로 명명되었다고 합니다.
- Default jvm MaxMetaspaceSize = None
- 별도로 사이즈를 지정하지 않으면 JVM이동적으로 알아서 조정한다고 하는데, 문제는 그냥 default로 하게 되면 크나큰 장애에 직면하게 될 수도 있다는 것입니다.
- 장애 상황 시 Metaspacce가 끊임없이 증가하다가 JVM이 죽는 문제가 발생할 수 있습니다. 하지만 MaxMetaspaceSize를 지정하면 GC가 정상 동작하여 끊임없이 증가하는 현상이 없어지게 됩니다.
- 과거 JDK8u40 미만에서 JVM 옵션으로 CMSClassUnloadingEnabled가 정의되지 않았을 때 FullGC가 수행되지 않았던 현상에 대한 bug report를 보면 bugs.openjdk.java.net/browse/JDK-8049831 를 보면 아래와 같은 글이 있습니다.
- MaxMetaspaceSize에 도달하게 되면, 클래스들에 대한 metadata를 메모리에서 release 하게 되는데, 해당 설정이 없기 때문에 metadata에 대한 release를 하지 못했고, 그로 인해 적절한 Full GC가 발생하지 못했다는 것입니다.
[참고자료]
728x90
반응형
'웹 개발' 카테고리의 다른 글
spring boot를 사용해야 하는 이유 (0) | 2020.12.04 |
---|---|
Spring boot application 시작 시, CPU 100% 를 사용할 경우 대처 방법 (0) | 2020.11.29 |
[netty] too many open files (0) | 2020.11.22 |
spring boot jar 외부에서 properties 파일을 읽는 방법 (0) | 2020.11.22 |
spring boot에서 mybatis ${} 사용시 sql injection 방어하기 (0) | 2020.11.21 |