JVM에서 사용하는 최대 메모리를 제한하려고합니다. 이것은 힙이 아니라,이 프로세스에서 사용하는 전체 메모리를 제한하려고합니다.JVM의 최대 메모리 사용량을 설정하는 방법은 무엇입니까?
답변
은 -Xms<memory>
-Xmx<memory>
을 사용합니다. Megs 및 Gigs를 나타내는 숫자 다음에 M
또는 G
을 각각 사용하십시오. -Xms
은 최소값을 나타내며 최대 값은 -Xmx
입니다.
스택 누수에 대해 걱정할 필요가 없습니다 (매우 드문 경우입니다). 스택을 제어 할 수없는 유일한 시간은 무한 (또는 실제로 깊은) 재귀입니다.
이것은 단지 힙일뿐입니다. 죄송합니다. 먼저 질문을 완전히 읽지 않았습니다.
다음 명령 줄 인수로 JVM을 실행해야합니다.
-Xmx<ammount of memory>
예 : JVM위한 1GB의 메모리의 최대 허용
-Xmx1024m
.
위의 대답은 정확합니다. Java 프로세스가 할당하는 원시 메모리의 양을 정상적으로 제어 할 수 없습니다. 그것은 당신의 어플리케이션이 무엇을하는지에 달려 있습니다.
즉, 플랫폼에 따라 자바 또는 다른 프로세스의 크기를 제한하기 위해 일부 메커니즘 (예 : ulimit)을 사용할 수 있습니다.
한계에 도달하면 정상적으로 실패하지 않을 것으로 예상하지 마십시오. 네이티브 메모리 할당 실패는 Java 힙의 할당 실패보다 처리하기가 훨씬 어렵습니다. 응용 프로그램이 충돌 할 가능성은 상당히 높지만 프로세스 크기를 줄이는 것이 시스템에 얼마나 중요한지에 따라 여전히 적합 할 수 있습니다.
나는 그것을 사용한 적이 없으니까. 어쩌면 당신은 유용 할 것입니다.은 NativeHeap는 -XX에 의해 increasded 할 수 있습니다 MaxDirectMemorySize = 256M (기본값은 128)
나는 op가 이것을 원했다는 것을 의심 스럽다. 네이티브 메모리는 java에서 C/C++ 코드를 호출 할 때 사용된다. –
네이티브 메모리는 직접 메모리로 버퍼를 할당하는 경우 nio 호출을 할 때도 사용됩니다. (... and classloaders, thread information ....) – stu
당신은 JVM의 메모리 (안 힙 크기)를 제한하려면 ulimit를 -v
JVM 힙 메모리의 차이의 아이디어를 얻으려면이 우수한 기사 http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html
를 살펴
MaxPermSize도 볼 수 있습니다. – pmu
그는 JVM 메모리에 대해 질문합니다. 당신이 말한 것은 힙 크기입니다. 둘 다 다릅니다. – vsingh
다른 설명에서 언급 한 내용을 다시 반복하려면 Xms 및 Xmx가 힙을 구성하십시오.이러한 변수를 구성하면 힙이 아닌 공간에 간접적 인 영향을 미치지 만 질문하는 사람은 총 메모리 사용량 (힙 + 비 힙)을 구성하는 방법이 있는지 확인하려고 시도하고 있습니다. – murungu