developer tip

런타임시 JVM 힙 크기 설정

copycodes 2020. 12. 5. 09:59
반응형

런타임시 JVM 힙 크기 설정


실행중인 Java 프로그램에서 힙 크기를 설정하는 방법이 있습니까?


아니.

당신이 매우 변수 힙 요구 사항이있는 응용 프로그램과 함께 할 수있는 일은 매우 높은 당신의 최대 힙 크기를 설정하는 것입니다 -Xmx및 조정 -XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio응용 프로그램이 많은 메모리에 정지하지 않도록 할 때 힙 정신과 (이 기본 설정으로이 작업을 수행 ).

그러나 앱에서 실제로 사용하는 메모리가 강력하고 빠르게 변할 때 성능 문제가 발생할 수 있습니다.이 경우 OS에 다시 할당하는 것보다 모든 메모리에 매달리는 것이 좋습니다. 다시 1 초 후에. 또한 GC 옵션 을 사용하여 GC가 너무 많은 소유권을 주장하지 않은 객체를 주변에 남겨 두지 않도록 할 수 있습니다. 이는 힙이 커질 수있는 공간이 많을 때하는 경향이 있으며 이는 목표를 무너 뜨릴 것입니다. 힙 크기가 앱의 요구에 맞게 조정되기를 원합니다.


http://www.dreamincode.net/forums/showtopic96263.htm 에 따르면 런타임에는이 작업을 수행 할 수 없지만 힙 크기가 다른 다른 프로세스를 생성 할 수 있습니다.


애플리케이션을 시작할 때 이러한 설정을 조정할 수 있지만 JVM이 실행되고 나면 해당 값을 변경할 수 없습니다. 이 같은:

java -Xms32m -Xmx512m FooBar

최소 힙 크기는 32MB로, 최대 힙 크기는 512MB로 설정됩니다. 일단 설정되면 실행중인 프로그램 내에서 변경할 수 없습니다.


실제로 이것이 가능하지 않다는 합의가있을 수 있지만 JVM 소스를 인체 공학적으로 제어 할 수있는 방법을 확인해야합니다. JVMTI 에이전트가 온라인 / 런타임에 힙 / 펌 / 테 누어 / 새로 / & c 크기 조정을 조정할 수 있다는 것은 매우 좋을 것입니다.

이것은 무엇을할까요? 에이전트는 JVM을 클라우드로 이동할 때 중요한 성능 또는 풋 프린트 목표에 따라 크기 조정을 추론 할 수 있습니다.


시작할 -mx 옵션을 사용할 수 있습니다 ( -Xmx 라고도 함 ). 이것은 필요한 최대 크기이므로 필요한 최대 크기 이상으로 설정할 필요가 없습니다.

그러나 해결 방법은 main ()이 최대 크기를 확인하고 최대 크기가 원하는대로되지 않으면 Java를 다시 시작하도록하는 것입니다. 즉, 다른 자바 프로그램을 시작하고 죽습니다.


나도 같은 질문을했다. 그리고이 위의 답변과는 달리 내가 대해 할 수있는 뭔가가 응용 프로그램은 최대 힙 JVM 크기를 증가는. 앱이 클러스터 모드의 웹 서버 인 경우 최소 / 최대 힙 크기를 변경하고 초기 인스턴스를 종료하는 것보다 새 인스턴스를 시작할 수 있습니다. 이는 NodeAgent (앱 서버 클러스터 된 인스턴스) JVM과 분리 된 관리 인스턴스가있는 GlassFish에서 특히 간단합니다.

많은 JVM 애플리케이션이 웹 애플리케이션이기 때문에이 블로그에서 보존 할 가치가 있다고 생각합니다.


귀하의 질문을 올바르게 이해하면 런타임에 힙 크기를 변경하려고 합니다 . 이것이 가능해야하는 이유를 모르겠습니다. JVM 옵션을 사용하여 시작시 힙 크기를 설정하십시오 -Xmx. 또한 -Xms꼭 필요한 경우에만 옵션 을 설정하는 것이 좋습니다. 이 옵션은 JVM에 할당되는 초기 헤드 메모리 양을 설정합니다.

애플리케이션이 메모리 측면에서 어떻게 작동하는지 알아야합니다. 값을 -Xmx현명하게 설정하십시오 . 앱이 일종의 서버 앱인 경우 더 높은 값을 설정할 수 있습니다. 그렇지 않으면 클라이언트 컴퓨터에서 실행되는 다른 가능한 앱과 물론 사용 가능한 메모리로 선택을 타협 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/763295/setting-jvm-heap-size-at-runtime

반응형