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


답변:


94

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


1
MaxPermSize도 볼 수 있습니다.
urmalp

89
그는 JVM 메모리에 대해 물었다. 당신이 말한 것은 힙 크기입니다. 둘 다 다릅니다
vsingh

8
다른 의견에서 언급 한 내용을 다시 언급하기 위해 Xms 및 Xmx는 힙만 구성합니다. 이러한 변수를 구성하면 힙 공간이 아닌 공간에 간접적 인 영향을 주지만, 질문을하는 사람은 총 메모리 사용량 (힙 + 비 힙)을 구성 할 수있는 방법이 있는지 확인하려고합니다.
murungu

2
우후 그래서 설정 -Xmx524M하고 프로세스는 1.2GB의 RAM을 차지합니다. (?)
phil294 2016 년

7
이것은 정답이 아니며 -Xms 및 -Xmx 옵션은 전체 메모리 할당이 아니라 jvm 힙 크기 만 조절합니다.
Peter De Winter

31

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

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

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

-Xmx<ammount of memory>

예:

-Xmx1024m

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


1
즉,이 스레드에 따르면, 사실이 아니다, 당신은 힙의 외부 유출 할 수있는 여러 방법이 있습니다 stackoverflow.com/questions/1475290/...
erotsppa

맞습니다. 스택과 관련이없는 메모리 문제가있는 방법은 많습니다. 그러나 그다지 흔하지는 않습니다.
jjnguy

9
힙이 아닌 메모리 크기를 제어 할 수 없다고 확신하십니까?
matt b

를 통해 제어 할 수 있습니다 -XX:MaxDirectMemorySize. 아니 확실하지만 여전히 수 있도록 많이 프로파일으니)
alexandergunnarson

2
@alexandergunnarson MaxDirectMemorySizeNIO 버퍼에만 영향을줍니다. JVM은 모든 종류의 다른 기본 메모리를 사용합니다.
Christopher Schultz

16

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

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


8
ulimit리눅스 명령은? 빠른 Google 검색을 수행 ulimit했으며 JVM과의 관계를 보지 못했습니다 . Y
Sam


11

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

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

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


1

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

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


1
나는 op가 이것을 원했다는 것을 의심합니다 : java에서 C / C ++ 코드를 호출 할 때 기본 메모리가 사용됩니다.
om-nom-nom 8:20에

6
직접 메모리로 버퍼를 할당하면 nio 호출을 할 때도 기본 메모리가 사용됩니다. (... 클래스 로더 및 스레드 정보 ...)
stu mar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.