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()); } }
Zeile 12: Zu diesem Zeitpunkt ruft das Studentenobjekt die Lernmethode auf und die JVM beantragt einen Speicherplatz im Stapelbereich für die Study-Methode Die Study-Methode wird ausgeführt. Danach wird der Stapelplatz sofort freigegeben. In Zeile 14 des Codes zeigt die Referenz des student2-Objekts auf Adresse, auf die Student zeigt Die Zeilen 15 und 16 des Codes weisen den Variablen von Student2 Werte zu. Da Student2 und Student auf dieselbe Stelle zeigen, ist der Wert von Zu diesem Zeitpunkt wird auch die Variable im Studentenobjekt geändert Zu diesem Zeitpunkt wurde der gesamte Code in der Hauptmethode ausgeführt und die Hauptmethode belegt den Stapelplatz wird ebenfalls recycelt und der Heap-Speicherplatz wartet auf das GC-Recycling Die Ergebnisse der Codeausführung lauten wie folgt:
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!