Meine erste Frage sollte lauten: Warum stellen Sie es überhaupt ein?Die Server-JVM legt das Maximum auf 1/4 der Hauptspeichergröße fest, was für die meisten Anwendungen angemessen ist.Sie können dies ändern, indem Sie eine eigene JVM erstellen oder einen Alias wie erstellen
alias java="java -Xmx30g"
Sie können die Speichernutzung regelmäßig überprüfen und den Prozess abbrechen, wenn Sie mehr verwenden.Das ist natürlich eine sehr schlechte Idee.
Stattdessen können Sie das Programm erneut mit denselben Argumenten, aber mit der gewünschten maximalen Heap-Größe ausführen.D.h.Sie können Runtime.exec.
Sie können es nicht ändern, da beim Start die maximale Speichergröße reserviert wird.
Übrigens gibt es ein weit verbreitetes Missverständnis, dass der Heap der einzige Speicher ist, der zählt.Dies trifft nicht zu, da die JVM, die Thread-Stacks, der native Speicher usw. alle etwas Speicher beanspruchen, sodass Sie den Heap auf 100 MB festlegen können, die JVM jedoch möglicherweise 300 MB verwendet.