[java] JVM의 최대 메모리 사용량을 설정하는 방법은 무엇입니까?

JVM에서 사용하는 최대 메모리를 제한하고 싶습니다. 이것은 힙이 아니라이 프로세스에서 사용하는 총 메모리를 제한하고 싶습니다.



답변

인수를 사용하십시오 -Xms<memory> -Xmx<memory>. 바이트의 Megs 및 Gigs를 각각 나타내는 숫자 M또는 G뒤에 사용하십시오 . -Xms최소값과 -Xmx최대 값을 나타냅니다 .


답변

스택 누수 메모리에 대해 걱정할 필요가 없습니다 (매우 드물다). 스택을 제어 할 수없는 유일한 시간은 무한 (또는 실제로) 재귀입니다.

이것은 단지 힙입니다. 죄송합니다. 처음에 질문을 완전히 읽지 않았습니다.

다음 명령 행 인수로 JVM을 실행해야합니다.

-Xmx<ammount of memory>

예:

-Xmx1024m

그러면 JVM에 최대 1GB의 메모리가 허용됩니다.


답변

jvm에 대한 메모리를 제한하려면 (힙 크기 아님) ulimit -v

jvm과 힙 메모리의 차이점에 대한 아이디어를 얻으려면이 훌륭한 기사 http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-를 살펴보십시오.
java-process.html


답변

위의 대답은 정확합니다 .Java 프로세스가 할당하는 기본 메모리의 양을 정상적으로 제어 할 수 없습니다. 응용 프로그램이 수행하는 작업에 따라 다릅니다.

즉, 플랫폼에 따라 Java 또는 다른 프로세스의 크기를 제한하기 위해 ulimit와 같은 일부 메커니즘을 사용할 수 있습니다.

그 한계에 도달하면 정상적으로 실패 할 것으로 기대하지 마십시오. 원시 메모리 할당 실패는 Java 힙에서의 할당 실패보다 처리하기가 훨씬 어렵습니다. 응용 프로그램이 중단 될 가능성은 상당히 높지만 여전히 프로세스 크기를 유지하는 것이 시스템에 얼마나 중요한지에 따라 여전히 사용자에게 적합 할 수 있습니다.


답변

NativeHeap은 -XX : MaxDirectMemorySize = 256M으로 증가 할 수 있습니다 (기본값은 128).

나는 그것을 사용한 적이 없다. 아마도 유용 할 것입니다.


답변