static Allocation in Java - Heap, Stack und permanente Generierung

Ich habe in letzter Zeit viel über Speicherzuweisungsschemata in Java gelesen, und es gab viele Zweifel, da ich aus verschiedenen Quellen gelesen habe. Ich habe meine Konzepte gesammelt und möchte darum bitten, alle Punkte durchzugehen und sie zu kommentieren. Ich habe erfahren, dass die Speicherzuweisung JVM-spezifisch ist, daher muss ich vorher sagen, dass meine Frage Sun-spezifisch ist.

Classes (geladen von den Klassenladern) werden in einem speziellen Bereich auf dem Haufen abgelegt: Permanent GenerationAlle Informationen, die sich auf eine Klasse beziehen, wie der Name der Klasse, der Klasse zugeordnete Objektarrays, von JVM verwendete interne Objekte (wie Java / Lang / Object) und Optimierungsinformationen, gehen in den Bereich Permanente Generierung.Alle statischen Elementvariablen werden wieder im Bereich Permanente Generierung gespeichert.Objekte gehen auf einen anderen Haufen: Junge Generation Es gibt nur eine Kopie jeder Methode pro Klasse, ob die Methode statisch oder nicht statisch ist. Diese Kopie wird in den Bereich Permanent Generation gestellt. Bei nicht statischen Methoden werden alle Parameter und lokalen Variablen in den Stapel geschrieben. Wenn diese Methode konkret aufgerufen wird, wird ein neuer Stapelrahmen zugeordnet. Ich bin nicht sicher, wo die lokalen Variablen einer statischen Methode gespeichert sind. Sind sie auf dem Haufen der permanenten Generation? Oder nur ihre Referenz wird im Bereich Permanente Generierung gespeichert, und die tatsächliche Kopie befindet sich an einer anderen Stelle (Wo?) Ich bin mir auch nicht sicher, wo der Rückgabetyp einer Methode gespeichert wird.Wenn die Objekte (in der jungen Generation) ein statisches Element (in der permanenten Generation) verwenden müssen, erhalten sie einen Verweis auf das statische Element und genügend Speicherplatz zum Speichern des Rückgabetyps der Methode usw.

Danke, dass du das durchgemacht hast!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage