2016-12-08 3 views
3

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

3

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) 

Weitere Informationen here und here.

+0

Genau das, was ich gesucht habe. – meexplorer

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.

+0

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

+1

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