Heim >Java >javaLernprogramm >Java-Code-Analyse zum Programmspeicher
In diesem Artikel werden hauptsächlich relevante Informationen zur Analyse des Programmspeichers in Java vorgestellt. Freunde, die sie benötigen, können darauf zurückgreifen.
In diesem Artikel wird die JVM (Java Virtual Machine) kurz erläutert, wenn wir ein Java-Programm ausführen . Maschine) Speicherzuordnung.
Lassen Sie uns zunächst einige Substantive perzeptiv kennenlernen:
1. Im Allgemeinen sind grundlegende Datentypen direkt vorhanden Der Speicherplatz wird auf dem Stapel zugewiesen, und lokale Variablen (im Methodencodesegment definierte Variablen) werden ebenfalls direkt auf dem Stapel zugewiesen. Wenn die Methode ausgeführt wird, in der sich die lokale Variable befindet, wird der Speicherplatz sofort von der JVM zurückgefordert auch ein Referenzdatentyp, nämlich Was wir normalerweise als Referenz bezeichnen, die dem Objekt entspricht, das mit dem Schlüsselwort new erstellt werden muss, befindet sich ebenfalls im Stapelbereich. Zu diesem Zeitpunkt weist die JVM der Objektreferenz im Stapel einen Adressraum zu Platz (entspricht einer Hausnummer, über diese Hausnummer können Sie Ihr Zuhause anhand der Nummer finden), weisen Sie dem referenzierten Objekt einen Platz im Heap-Raum zu, und die Adressreferenz im Stapelraum zeigt auf den Objektbereich im Heap-Raum (Suchen Sie die Adresse anhand der Hausnummer).
2. Heap wird im Allgemeinen zum Speichern von Daten verwendet, die mit dem Schlüsselwort „new“ abgerufen werden.
Als nächstes verwenden wir ein Programm, um die Speichersituation der JVM intuitiv zu spüren, wenn das Programm ausgeführt wird.package demo; public class Student { private String name; private int age; public void study() { System.out.println("I love study!"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package demo; public class StudentDemo { public static void main(String[] args) { Student student = new Student(); System.out.println(student.getName() + ":" + student.getAge()); student.setName("John"); student.setAge(23); System.out.println(student.getName() + ":" + student.getAge()); student.study(); Student student2 = student; student2.setName("Jack"); student2.setAge(25); System.out.println(student2.getName() + ":" + student2.getAge()); System.out.println(student.getName() + ":" + student.getAge()); } }Wenn wir das Programm ausführen, wird die JVM kombiniert die Student-Klasse und StudentDemo Die Klasse wird kompiliert und dann in einen Ort namens Methodenbereich in der JVM geladen. Die Mitgliedsvariablen und Mitgliedsmethoden der Klasse werden ebenfalls in den Methodenbereich geladen. Zu diesem Zeitpunkt sieht das Speichermodell wie folgt aus
Das obige ist der detaillierte Inhalt vonJava-Code-Analyse zum Programmspeicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!