2009-09-29 1 views

답변

82

-Xms<memory>-Xmx<memory>을 사용합니다. Megs 및 Gigs를 나타내는 숫자 다음에 M 또는 G을 각각 사용하십시오. -Xms은 최소값을 나타내며 최대 값은 -Xmx입니다.

+1

MaxPermSize도 볼 수 있습니다. – pmu

+54

그는 JVM 메모리에 대해 질문합니다. 당신이 말한 것은 힙 크기입니다. 둘 다 다릅니다. – vsingh

+6

다른 설명에서 언급 한 내용을 다시 반복하려면 Xms 및 Xmx가 힙을 구성하십시오.이러한 변수를 구성하면 힙이 아닌 공간에 간접적 인 영향을 미치지 만 질문하는 사람은 총 메모리 사용량 (힙 + 비 힙)을 구성하는 방법이 있는지 확인하려고 시도하고 있습니다. – murungu

26

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

이것은 단지 힙일뿐입니다. 죄송합니다. 먼저 질문을 완전히 읽지 않았습니다.

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

-Xmx<ammount of memory> 

예 : JVM위한 1GB의 메모리의 최대 허용

-Xmx1024m 

.

+0

이 스레드에 따르면 사실이 아닙니다. 힙 외부로 누출 될 수있는 방법은 여러 가지가 있습니다. http://stackoverflow.com/questions/1475290/java-memory-mystery-do-i-have-a-leak – erotsppa

+0

당신은 맞습니다. 스택과 관련이없는 메모리 문제를 갖는 방법은 많이 있습니다. 그러나, 그들은 매우 일반적이지 않습니다. – jjnguy

+5

힙이 아닌 메모리 크기를 제어 할 수 없습니까? –

9

위의 대답은 정확합니다. Java 프로세스가 할당하는 원시 메모리의 양을 정상적으로 제어 할 수 없습니다. 그것은 당신의 어플리케이션이 무엇을하는지에 달려 있습니다.

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

한계에 도달하면 정상적으로 실패하지 않을 것으로 예상하지 마십시오. 네이티브 메모리 할당 실패는 Java 힙의 할당 실패보다 처리하기가 훨씬 어렵습니다. 응용 프로그램이 충돌 할 가능성은 상당히 높지만 프로세스 크기를 줄이는 것이 시스템에 얼마나 중요한지에 따라 여전히 적합 할 수 있습니다.

2

은 NativeHeap는 -XX에 의해 increasded 할 수 있습니다 MaxDirectMemorySize = 256M (기본값은 128)

나는 그것을 사용한 적이 없으니까. 어쩌면 당신은 유용 할 것입니다.

+1

나는 op가 이것을 원했다는 것을 의심 스럽다. 네이티브 메모리는 java에서 C/C++ 코드를 호출 할 때 사용된다. –

+4

네이티브 메모리는 직접 메모리로 버퍼를 할당하는 경우 nio 호출을 할 때도 사용됩니다. (... and classloaders, thread information ....) – stu

10

당신은 JVM의 메모리 (안 힙 크기)를 제한하려면 ulimit를 -v

JVM 힙 메모리의 차이의 아이디어를 얻으려면이 우수한 기사 http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html

를 살펴
+6

'ulimit'은 리눅스 명령인가요? 나는 빠른 구글 검색을했고'ulimit'과 JVM 사이의 관계를 보지 못했다. Y – Sam

+0

예, linux 명령입니다. http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/x4733.html – vsingh