Was ist der Unterschied zwischen Java Nicht-Heap-und Stack-Speicher? Sind Sie Gleich, wenn nicht, was ist der Unterschied zwischen Ihnen?
Ich bin mit Jconsole für die überwachung einer Java-Anwendung. Der Speicher-Registerkarte zeigt unterschiedliche Heap und Non-Heap-Erinnerungen wie
- Heap-Speicherauslastung
- Nicht-Heap-Speicherauslastung
- Speicher-Pool "CMS Alten Gen"
- Speicher-Pool "Par Eden Space"
- Speicher-Pool "Par Survivor Space"
- Speicher-Pool "Code-Cache"
- Speicher-Pool "CMS-Perm Gen"
Was ist der Unterschied zwischen diesen Begriffen. Auch bitte geben Sie einige Informationen über - wie findet man Anomalien im Verhalten der Anwendung durch die überwachung dieser Parameter.
- mögliche Duplikate von Wie wird der java-Speicher-pool teilen kann?
- Dup stackoverflow.com/questions/1262328/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es im wesentlichen drei Kategorien von storage in alle C-basierten Sprachen (und den meisten anderen Sprachen):
Heap mit dem Sie vertraut sind.
Stack Sie sind auch vertraut mit, aber Sie wissen es nur nicht. Wenn Sie eine Methode mit "lokalen" Variablen, die Variablen zugeordnet sind, in einem "Aufruf-frame". Der "Aufruf-frame" wird zugewiesen, wenn Sie die Methode aufrufen, und gelöscht, wenn Sie die Rückkehr aus der Methode, und es ist daher am effizientesten umgesetzt in einem "stack" wächst mit call und schrumpft mit return.
Statische Sachen, die Sie nicht explizit zuweisen, und im wesentlichen besteht ab dem Zeitpunkt die Ausführung des Programms beginnt.
Den Platzbedarf für den Stapel ist in der Regel ziemlich klein und wird in einen Topf geworfen mit "Non-Heap-Speicher" in den Kategorien oben.
Non-heap-Speicher ist der gesamte Speicher für die JVM reserviert für andere Zwecke als der heap. Dies beinhaltet:
In Ihrer Liste "CMS Alten Gen", "Par Eden Space", "Par Survivor Space" und "CMS-Perm Gen", alle beziehen sich auf verschiedene Abschnitte des Heaps.
Folgen Sie bitte den links http://www.yourkit.com/docs/kb/sizes.jsp und http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.50%2Fdiag%2Fproblem_determination%2Faix_mem_heaps.html
Non-Heap
Auch die JVM hat anderen Speicher als heap bezeichnet als non-heap-Speicher. Es wird erstellt, bei der JVM startup und Märkte pro-Klasse Strukturen wie Laufzeit-Konstanten-pool, Feld und Methode die Daten, und der code für Methoden und Konstruktoren, sowie Strings interniert.
Leider die einzige information, die JVM bietet auf non-heap-Speicher ist seine Gesamtgröße. Keine detaillierten Informationen über non-heap-Speicher Inhalt verfügbar ist.
Das abnorme Wachstum der non-heap-Speicher-Größe kann auf eine potenzielle problem, in diesem Fall können Sie prüfen, die folgenden:
Wenn gibt es Klasse be-Themen wie geleckt Lader. In diesem Fall kann das problem gelöst werden mit Hilfe des Class loaders anzuzeigen.
Wenn es strings sind Massiv interniert. Für die Erkennung eines solchen Problems, Object allocation recording verwendet werden kann.