Die maximale heap-Größe mit den für die Java-Prozess, der in Windows 10 64-bit mit 64-bit-JVM
Was ist die maximale Heap-Größe für Java-Prozess läuft auf Windows 10 64 bit, mit - 64-bit-JVM? Meine Maschine hat 8 GB RAM. Und ich bin mit Java 8.
Ich versuchte zu laufen BFS auf riesigen Graphen für experimentelle Zwecke. Beim laufen BFS ich bin monitoring-Heap-Größe wird verwendet in Java Visual VM. Laut Visual VM-heap-Auslastung ist immer kleiner als 2000 MB unabhängig von der Bereitstellung folgenden JVM-Parameter
-Xms2048m
-Xmx3072m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
Habe ich einige der Forschung über das internet, aber konnte keine konkrete Antwort in Bezug auf das system-Spezifikation, die ich verwende. Kann ein java-Prozess mehr als 2 GB unter Windows 10 64-bit-und 64-bit-JVM? Als Richtlinien für die Java-Heap-sizing die Grenze für Windows XP/2008/7 ist 2 GB.
-Xmx3072m
option, es unterstützt 3GiB heap. Wenn es den nutzen nicht mehr als 2000MB, Ihre Anwendung ist einfach, braucht nicht mehr RAM. Was sollte die JVM zu tun, füllen Sie den heap mit dummy-Objekte, um eine höhere Auslastung?InformationsquelleAutor Brother | 2017-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf einem 64-bit-Maschine mit 64-bit-JVM können Sie die Arbeit mit multi-gigabyte-heaps (Dutzende und Dutzende von GB). Ich bin nicht sicher, es ist in keiner Weise eingeschränkt, außer durch den verfügbaren Speicher (und der theoretische Adressraum eines 64-bit-pointer).
Natürlich, wenn Sie arbeiten mit eine riesige heap, GC hat eine Menge mehr Arbeit zu tun, und Sie können feststellen, dass Sie brauchen, um zu skalieren horizontal statt vertikal, um eine gute Leistung.
Wenn VisualVM nicht angezeigt, in der Sie mit mehr als 2GB (die anfängliche heap-Größe mit
-Xms
), dann ist es wahrscheinlich einfach nicht brauchen mehr als das. Sie habe aufgrund der Erlaubnis zur Nutzung bis zu 3GB (-Xmx
), aber die JVM nicht mehr Speicher zuzuweisen, nur für den Spaß von ihm.Xmx
undXms
ist... plusSogar, wenn Sie die Durchsetzung der Zuweisung mehr Speicher, z.B. über
-Xms
es bedeutet nicht, dass die JVM wird mit. Wenn die Anwendung nicht benötigen, es gibt keinen Weg, um ihn zu zwingen, es zu benutzen (und wo war der Sinn darin, dass, wenn es möglich war?).Eigentlich bin ich immer der OutOfMemoryError auf Java heap space unabhängig von der Tatsache, dass ich die Angabe von 3GB und meine java-Prozess nicht besetzen mehr als 2GB, bevor es abstürzt.
Das impliziert, dass Sie nicht läuft in einer 64-bit-Umgebung.
InformationsquelleAutor Kayaman
Maximale Heap zugewiesen werden können, die für 32-bit-JVM ist 2^32 = 4G, Wieder 4 GB werden aufgeteilt in 1+ GB für die VM zu verwenden, für die runtime-Klassen. Es ändert windows-es ist ~2GB und linux ist es ~3GB.
Wie Sie mit 64-bit-Maschine maximale heap verfügbar ist 2^64 es wird groß genug sein, für Sie zu laufen, BFS leicht.
Monitor können Sie den verfügbaren Speicher mithilfe von vm-flags "-XX+PrintFlagsFinal | grep -iE-HeapSize" wird Ihnen die maximal mögliche heap-Größe, die verwendet werden können. Konfigurieren Sie etwas weniger und starten Sie mit...
InformationsquelleAutor Fairoz
Es gibt keine bestimmte Größe, die Sie angeben konnte für 64-bit-Architektur, aber einfachen test können Sie feststellen wie hoch ist die maximale zusammenhängender Platz zur Verfügung steht oder zugewiesen werden können, die für einen Prozess. Dies könnte getestet werden wie folgt mit den einfachen Befehl.
Versuchen Sie, wie unten
java -Xmx -version
Wenn der obige Befehl gibt das Ergebnis dann könnte Ihr system erlaubt sein, Xmx, die der Ebene, Wenn es fehlschlägt, dann können Sie nicht angeben, dass Wert.
Paar test-system.
Getestet habe ich den Wert mit 20G.40g,100G,160G,300G all diese Gaben java -version ausgegeben, sondern versucht mit 1600G, die den Fehler auslöst.
Ausgabe der test
C:\Users\mpalanis>java -Xmx300G -version
java-version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
C:\Users\mpalanis>java -Xmx1600G -version
Fehler während der Initialisierung aufgetreten ist der VM
Nicht zuweisen 52431424KB bitmaps für die parallele garbage collection für den gewünschten 1677805568KB heap.
Error: could not create the Java Virtual Machine.
Fehler: es ist Eine schwerwiegende Ausnahme aufgetreten ist. Programm wird beendet.
Hoffe, diese Erklärung hilft.
InformationsquelleAutor Mohan Raj