내 첫 번째 질문은 왜 그것을 설정하고 있습니까? 서버 JVM은 기본 메모리 크기의 최대 1/4를 설정하며 대부분의 응용 프로그램에 적합합니다. 자신의 JVM을 구축하여 이것을 변경하거나 다음과 같은 별명을 만들 수 있습니다.
alias java="java -Xmx30g"
당신이 할 수있는 일은 메모리 사용을 주기적으로 확인하고 더 많이 사용하면 프로세스를 죽이는 것입니다. 이것은 물론 매우 나쁜 생각입니다.
대신 당신이 할 수있는 일은 동일한 인수로 다시 프로그램을 실행하지만 원하는 최대 힙 크기로 다시 실행하는 것입니다. 즉, runtime.exec을 할 수 있습니다.
시작시 최대 메모리 크기를 보유하므로 변경할 수 없습니다.
BTW 힙이 중요한 기억이라는 일반적인 오해가 있습니다. 이것은 JVM, 스레드 스택, 기본 메모리 등으로 사실이 아닙니다. 모두 메모리를 사용하므로 힙을 100MB로 만들 수 있지만 JVM은 300MB를 사용할 수 있습니다.