[java] JVM을 시작할 때 -Xms 및 -Xmx 매개 변수는 무엇입니까?

JVM에서 의 사용 XmsXmx매개 변수를 설명하십시오 . 그것들의 기본값은 무엇입니까?



답변

플래그 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 내부 데이터 구조뿐만 아니라 힙과 별도로 메모리에 할당됩니다.


답변

명령을 실행하면 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의 기본값은 시스템에서 사용 가능한 메모리 및 플랫폼에 따라 다릅니다.


답변

시작시 -Xms 초기 힙 크기이지만 작업 프로세스 중에 힙 크기는 사용자의 비 활동 또는 GC 반복으로 인해 -Xms 보다 작을 수 있습니다 . 최소 힙 크기는 아닙니다.

-Xmx 최대 힙 크기


답변