답변:
인수를 사용하십시오 -Xms<memory>
-Xmx<memory>
. 바이트의 Megs 및 Gigs를 각각 나타내는 숫자 M
또는 G
뒤에 사용하십시오 . -Xms
최소값과 -Xmx
최대 값을 나타냅니다 .
-Xmx524M
하고 프로세스는 1.2GB의 RAM을 차지합니다. (?)
스택 누수 메모리에 대해 걱정할 필요가 없습니다 (매우 드물다). 스택을 제어 할 수없는 유일한 시간은 무한 (또는 실제로) 재귀입니다.
이것은 단지 힙입니다. 죄송합니다. 처음에 질문을 완전히 읽지 않았습니다.
다음 명령 행 인수로 JVM을 실행해야합니다.
-Xmx<ammount of memory>
예:
-Xmx1024m
그러면 JVM에 최대 1GB의 메모리가 허용됩니다.
-XX:MaxDirectMemorySize
. 아니 확실하지만 여전히 수 있도록 많이 프로파일으니)
MaxDirectMemorySize
NIO 버퍼에만 영향을줍니다. JVM은 모든 종류의 다른 기본 메모리를 사용합니다.
jvm에 대한 메모리를 제한하려면 (힙 크기 아님) ulimit -v
jvm과 힙 메모리의 차이점에 대한 아이디어를 얻으려면이 훌륭한 기사 http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-를 살펴보십시오. java-process.html
ulimit
리눅스 명령은? 빠른 Google 검색을 수행 ulimit
했으며 JVM과의 관계를 보지 못했습니다 . Y
위의 대답은 정확합니다 .Java 프로세스가 할당하는 기본 메모리의 양을 정상적으로 제어 할 수 없습니다. 응용 프로그램이 수행하는 작업에 따라 다릅니다.
즉, 플랫폼에 따라 Java 또는 다른 프로세스의 크기를 제한하기 위해 ulimit와 같은 일부 메커니즘을 사용할 수 있습니다.
그 한계에 도달하면 정상적으로 실패 할 것으로 기대하지 마십시오. 원시 메모리 할당 실패는 Java 힙에서의 할당 실패보다 처리하기가 훨씬 어렵습니다. 응용 프로그램이 중단 될 가능성은 상당히 높지만 여전히 프로세스 크기를 유지하는 것이 시스템에 얼마나 중요한지에 따라 여전히 사용자에게 적합 할 수 있습니다.
NativeHeap은 -XX : MaxDirectMemorySize = 256M으로 증가 할 수 있습니다 (기본값은 128).
나는 그것을 사용한 적이 없다. 아마도 유용 할 것입니다.