답변:
플래그 Xmx
는 JVM (Java Virtual Machine)의 최대 메모리 할당 풀을 Xms
지정하고 초기 메모리 할당 풀 을 지정합니다.
이는 JVM이 Xms
메모리 양 으로 시작되고 최대 Xmx
메모리 양 을 사용할 수 있음을 의미합니다 . 예를 들어, 아래와 같이 JVM을 시작하면 256MB의 메모리로 시작하여 프로세스가 최대 2048MB의 메모리를 사용할 수 있습니다.
java -Xms256m -Xmx2048m
메모리 플래그는 킬로바이트, 메가 바이트 등과 같은 다른 크기로 지정할 수도 있습니다.
-Xmx1024k
-Xmx512m
-Xmx8g
Xms
플래그는 기본값이 없으며, Xmx
일반적으로 2백56메가바이트의 기본 값을가집니다. 이 플래그의 일반적인 용도는을 만날 때 java.lang.OutOfMemoryError
입니다.
이러한 설정을 사용할 때 이러한 설정은 JVM의 힙에 대한 것이며 JVM은 힙 에 할당 된 크기보다 더 많은 메모리를 사용할 수 있습니다. 에서 오라클의 설명서 :
JVM은 힙보다 더 많은 메모리를 사용합니다. 예를 들어 Java 메소드, 스레드 스택 및 기본 핸들은 JVM 내부 데이터 구조뿐만 아니라 힙과 별도로 메모리에 할당됩니다.
OutOfMemoryError
경우 발생합니다.
-Xms256m
로 시작하는 메모리 양을 명확하게 표현하는 방법 은 "256MB"가 아니라 "256MiB"입니다. 이는 10의 거듭 제곱이 아니라 2 진 거듭 제곱에 의한 것이기 때문입니다. en.wikipedia.org/wiki/Binary_prefix를 참조하십시오 . 또한, 일부 불가능한 공간 서바이버 공간 여분 풀 방치되기 때문에, 실제에있어서 사용 가능한 메모리의 양이 Runtime.getRuntime().maxMemory()
적은 -Xmx 통해 지정된 값보다
명령을 실행하면 java -X
모든 -X
옵션 목록이 표시됩니다 .
C:\Users\Admin>java -X
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xdiag show additional diagnostic messages
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size.........................
-Xmx<size> set maximum Java heap size.........................
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xfuture enable strictest checks, anticipating future default
-Xrs reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni perform additional checks for JNI functions
-Xshare:off do not attempt to use shared class data
-Xshare:auto use shared class data if possible (default)
-Xshare:on require using shared class data, otherwise fail.
-XshowSettings show all settings and continue
-XshowSettings:all show all settings and continue
-XshowSettings:vm show all vm related settings and continue
-XshowSettings:properties show all property settings and continue
-XshowSettings:locale show all locale related settings and continue
-X 옵션은 비표준이며 사전 통지없이 변경 될 수 있습니다.
나는 이것이 당신이 이해하는 데 도움이 될 수 있도록 Xms
, Xmx
가장 중요한 것은뿐만 아니라 많은 다른 것들. :)
IDE에서 지정할 수 있습니다. 예를 들어, Eclipse의 구성 실행 → VM 인수에서 . 다음 -Xmx800m -Xms500m
과 같이 입력 할 수 있습니다
질문 자체는 이미 위에서 언급되었습니다. 기본값의 일부만 추가하면됩니다.
당 http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html
Xmx의 기본값은 시스템에서 사용 가능한 메모리 및 플랫폼에 따라 다릅니다.
-Xmx128m -Xms64m
그것을 사용할 때275m
RES mem 주위에 피크 수 있지만 Java를 사용하여 RES mem-Xmx128m -Xms128m
주위에 피크 수 있습니다. 가장550m
좋은 것은 GC를 강조하고 무슨 일이 일어나는지 보는 것입니다 ...