Ich versuche zu debuggen, wie viel Speicher mein Java-Prozess verbraucht. Bitte korrigieren Sie mich, falls ich falsch liege.Liest ich diesen Top-Befehl richtig?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11798 root 20 0 17.354g 6.084g 164456 S 38.9 10.2 12:52.04 java
Dies ist der Prozess. Und so beginne ich diese Java-Anwendung
'-server -Xmx10G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps'
Wie Sie sehen können, gebe ich dieser Anwendung 10G Speicher. Aber laut der oberen Hilfeseite% MEM ist der Prozentsatz der tatsächlichen Speichernutzung. In diesem Fall nehme ich an, dass es nur 10% von 10G verwendet?
Der Grund, warum ich das frage, weil ich die -Xmx auf 3GB reduzieren möchte, wenn es nur 1GB verwendet, dann wird es 10G geben wird ein bisschen Overkill sein.
Meine Frage ist, bin ich richtig in der Annahme, dass 10% ist die tatsächliche Nutzung des Speichers dieses Prozesses, so dass ich -Xmx-Option, so kann andere Prozess mehr Speicher erhalten.
'Xmx' ist" maximale Grenze ". Es ist nicht "allokieren so viel", es ist "nicht mehr als so viel zuweisen" –
% MEM ist der Prozentsatz des tatsächlichen Arbeitsspeichers relativ zum gesamten Systemspeicher verwendet. –
Warum verwenden Sie Java VisualVM nicht in JDK? – mariusz2108