Ich bin neu in diesem Thema, also Entschuldigung, wenn meine Frage offensichtlich ist, aber hier ist es -
Immer wenn wir eine Java-Anwendung starten, wird eine neue Instanz von JVM erstellt. JVM selbst ist ein Prozess, der unter OS läuft und wie jeder andere Prozess eigene Speicheranforderungen hat.
Ich kenne die Speicherstruktur von Heap und Nicht-Heap und wie sie konfiguriert und manipuliert werden können. Was ich suche, ist Speicherdetails von jvm Prozess selbst, Wie der Gesamtspeicher geteilt wird, d. H. Eigene Speicheranforderungen von jvm + Heap + Non-Heap + native Stack
Wie viele Segmente gibt es?
Wie viel Speicher OS zu JVM zuweist und wie nutzt jvm es weiter?
Gibt es einen Befehl oder ein Dienstprogramm, um diese Details beim Ausführen einer Anwendung zu überprüfen?
Ich habe viel googelt, aber nichts Konkretes in dieser Richtung gefunden, fast überall erklären Artikel die Heap- und Nicht-Heap-Speicherstruktur (eden/old/meta etc.). Ich habe auch unter Links-
JVM Memory Types
How is the java memory pool divided?
JVM Memory segments allocation
https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/
JVM memory mapping over a Linux Process
Understanding JVM Memory Allocation and Java Out of Memory: Heap Space
besucht Es scheint, ich bin hier stecken, jeder Zeiger zu diesem Thema wäre toll, so dass ich anfangen kann suchen in dieser Richtung.Speicherdetails von JVM als Prozess
Antwort
Native Memory Tracking (NMT) -Funktion von Java 8 hilft, Ihre Fragen zu beantworten.
Run Java mit der Option -XX:NativeMemoryTracking=summary
dann zur Laufzeit den folgenden Befehl JVM Speicherstatistik zu drucken:
jcmd <pid> VM.native_memory summary
Die Ausgabe aussehen wird:
Total: reserved=664192KB, committed=253120KB
- Java Heap (reserved=516096KB, committed=204800KB)
(mmap: reserved=516096KB, committed=204800KB)
- Class (reserved=6568KB, committed=4140KB)
(classes #665)
(malloc=424KB, #1000)
(mmap: reserved=6144KB, committed=3716KB)
- Thread (reserved=6868KB, committed=6868KB)
(thread #15)
(stack: reserved=6780KB, committed=6780KB)
(malloc=27KB, #66)
(arena=61KB, #30)
- Code (reserved=102414KB, committed=6314KB)
(malloc=2574KB, #74316)
(mmap: reserved=99840KB, committed=3740KB)
- GC (reserved=26154KB, committed=24938KB)
(malloc=486KB, #110)
(mmap: reserved=25668KB, committed=24452KB)
- Compiler (reserved=106KB, committed=106KB)
(malloc=7KB, #90)
(arena=99KB, #3)
- Internal (reserved=586KB, committed=554KB)
(malloc=554KB, #1677)
(mmap: reserved=32KB, committed=0KB)
- Symbol (reserved=906KB, committed=906KB)
(malloc=514KB, #2736)
(arena=392KB, #1)
- Memory Tracking (reserved=3184KB, committed=3184KB)
(malloc=3184KB, #300)
- Pooled Free Chunks (reserved=1276KB, committed=1276KB)
(malloc=1276KB)
- Unknown (reserved=33KB, committed=33KB)
(arena=33KB, #1)
Wenn Sie nach Befehlszeilenprogrammen suchen, starten Sie von jps
, die nur PIDs aller laufenden Java-Prozesse druckt. Wählen Sie dann eine, die Sie entdecken möchten und verwenden Sie jmap
mit seiner PID.
JDK kommt mit visuellen Tools auch. Die alte JConsoke
und die neuere und bessere one VisualVM
.
Ich habe Jconsole und Visual VM verwendet. Gerade gefunden, diesen Artikel, ich sehe so etwas, http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html – meexplorer
Wenn Betriebssystem hat JVM X-Speicher als einen Prozess zugewiesen, dann wird JVM aus X Speicher auf Heap/Perm basierend auf -Xms/-Xmx/-XX zuweisen: PermSize, MaxPermSize, sagen wir, verbleibender Speicher ist (X1 = X-heap- Dauerwelle). Was passiert nun mit X1, wie viel Speicher benötigt JVM für sich selbst von X1, wie viel geht es zu anderen Segmenten? wie der Artikel erklärt, gibt es wenige andere Segmente auch – meexplorer
- 1. JVM- und Java-Linux-Prozess
- 2. API für zusätzliche Speicherdetails Softlayer
- 3. SQL Server-Prozedur Cache-Speicherdetails
- 4. Jvm Optionen nicht gegabelten Prozess weitergegeben
- 5. Hadoop JVM-Prozess hängt ohne Fehlermeldung,
- 6. Killing ein JVM-Prozess mit dem Namen anstelle von PID
- 7. JVM-Speicher von C
- 8. Finden Jvm von Java
- 9. führen Sie neuen Java-Code in vorhandenen jvm-Prozess
- 10. Spawn einen Prozess in Java, der eine JVM-Shutdown überlebt
- 11. Neustart von nodejs als Prozess in C#
- 12. JVM GC Protokollierung von AWS Lambda?
- 13. Warum ist die JVM mit mehr Speicher, als ich
- 14. Laufender Prozess als unprivilegierter Benutzer
- 15. Speicher außerhalb von JVM zuweisen und in JVM verwenden
- 16. JVM Implementieren von JRE
- 17. NUMA Bekanntheit von JVM
- 18. Verständnis von JVM Besser
- 19. Starten Sie den Prozess als untergeordneten Prozess zu Service
- 20. Scala-Prozess anders als Bash?
- 21. JVM hängt am Ausgang
- 22. Separate JVM-Eigenschaften für jedes Java-Programm auf derselben JVM
- 23. Linux Child Prozess übergeordneter Prozess Baum tötet
- 24. Starten Sie einen Prozess als Benutzer aus einem Prozess, der als Administrator ausgeführt wird
- 25. Wie schließe ich einen eingebetteten JRuby als Reaktion auf einen SIGTERM auf den JVM-Prozess sauber herunter?
- 26. Überwachung von Threads in JVM
- 27. Wie JVM von der Funktion
- 28. Warum lässt Leiningen eine eigene JVM laufen?
- 29. Keep Go Server als Hintergrund Prozess
- 30. JNA - Zugriffsverletzung, JVM-Terminale
Genau das, was ich gesucht habe. – meexplorer