Antworten:
Verwenden Sie die Argumente -Xms<memory>
-Xmx<memory>
. Verwenden Sie M
oder G
nach den Zahlen, um Megs bzw. Gigs von Bytes anzuzeigen. -Xms
gibt das Minimum und -Xmx
das Maximum an.
-Xmx524M
und der Prozess nimmt 1,2 GB RAM ein. (?)
Sie sollten sich keine Sorgen machen müssen, dass der Stapel Speicher verliert (dies ist höchst ungewöhnlich). Das einzige Mal, dass der Stapel außer Kontrolle geraten kann, ist eine unendliche (oder wirklich tiefe) Rekursion.
Dies ist nur der Haufen. Entschuldigung, ich habe Ihre Frage zuerst nicht vollständig gelesen.
Sie müssen die JVM mit dem folgenden Befehlszeilenargument ausführen.
-Xmx<ammount of memory>
Beispiel:
-Xmx1024m
Dies ermöglicht maximal 1 GB Speicher für die JVM.
-XX:MaxDirectMemorySize
. Nicht, dass ich stark profiliert hätte, um sicherzugehen, aber trotzdem;)
MaxDirectMemorySize
betrifft nur NIO-Puffer. Alle Arten anderer nativer Speicher werden von der JVM verwendet.
Wenn Sie den Speicher für jvm (nicht die Heap-Größe) einschränken möchten, ulimit -v
In diesem hervorragenden Artikel http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- finden Sie eine Vorstellung vom Unterschied zwischen JVM- und Heap-Speicher. java-process.html
ulimit
ein Linux-Befehl? Ich habe eine schnelle Google-Suche durchgeführt und keine Beziehung zwischen ulimit
und der JVM festgestellt. Y
Die obige Antwort ist irgendwie richtig. Sie können nicht genau steuern, wie viel nativen Speicher ein Java-Prozess zuweist. Dies hängt davon ab, was Ihre Anwendung tut.
Abhängig von der Plattform können Sie jedoch möglicherweise einen Mechanismus verwenden, z. B. ulimit, um die Größe eines Java oder eines anderen Prozesses zu begrenzen.
Erwarten Sie nur nicht, dass es ordnungsgemäß fehlschlägt, wenn es diese Grenze erreicht. Native Speicherzuweisungsfehler sind viel schwieriger zu behandeln als Zuordnungsfehler auf dem Java-Heap. Es besteht eine ziemlich gute Chance, dass die Anwendung abstürzt, aber je nachdem, wie wichtig es für das System ist, die Prozessgröße so gering wie möglich zu halten.
Der NativeHeap kann um -XX erhöht werden: MaxDirectMemorySize = 256M (Standard ist 128)
Ich habe es nie benutzt. Vielleicht finden Sie es nützlich.