2017-11-19 5 views
1

JDK 8에서의 분수로의 -Xmx를 설정, 기본 최대 힙 크기는자바 물리적 메모리

물리적 메모리 또는 1기가바이트의 1/4

입니다 그리고 그것은의 -Xmx를 사용하여 대체 할 수 있습니다 스위치 :

-Xmx 명령 줄 옵션을 사용하여이 기본값을 무시할 수 있습니다.

Xmx 스위치는 바이트하지 분수와 함께 작동합니다. 간단히 기계의 실제 메모리의 최대 힙을 X %로 설정하는 방법이 있습니까?

편집 :

왜 묻는거야? 음, 우선, 호기심. 나는 기본 Xmx가 실제 메모리의 일부로 정의된다는 것이 이상하다는 것을 알지만, 만지 자마자 그것은 절대 값이다. 둘째, 두 개의 서로 다른 서버에 동일한 (또는 유사한) 응용 프로그램을 배포하고 그 중 하나에 실제 메모리가 더 많은 경우 JVM을 추가 메모리를 사용하도록 자동으로 가져 오는 옵션이 필요합니다. 항상 의미있는 것은 아니지만 때로는 의미가 있습니다.

분명한 해결책은 여유 공간의 양을 확인하고 Xmx를 계산하는 셸 스크립트를 사용하는 것입니다.하지만 이는 멍청한 솔루션처럼 보입니다. 나는 그것이 순수 자바로 어떻게 든 가능해야한다고 상상한다.

+0

이것은 Java를 호출하는 모든 작업을 수행해야하므로 플랫폼에 따라 달라집니다 방법. –

+1

@OliverCharlesworth 그건 내가 생각한거야. 그러나 그것은 이상합니다. 기본값은 실제 메모리의 일부로 정의되지만 1/4를 1/3 또는 1/2로 변경하는 스위치는 없습니다. – Malt

+0

HotSpot JVM의 힙 크기를 * 변경할 수 없으므로 "순수 Java"솔루션은 링크 된 Q & A의 기술을 사용하여 실제 메모리 크기를 찾은 다음 새 JVM을 시작합니다. 솔직히 "clunky"솔루션을 사용하는 것이 좋습니다. –

답변

0

아마도 직접해야합니다. 메모리 최대량을 얻고 (wmic ComputerSystem get TotalPhysicalMemory과 같은 구문을 분석),이 중 1/4을 계산하고 -Xmx 옵션으로 설정하십시오.

나는 질문하고 싶습니다. 왜 물리적 메모리의 비율이 필요한지. 최대 메모리 양은 응용 프로그램의 메모리 사용에 영향을 미치지 않아야합니다. 응용 프로그램 자체에서이를 처리해야합니다.