2. Darstellung von Variablen und Werten Inhaltsverzeichnis 4. Objekte

3. Speicherbereiche

Die JVM[1] hat drei Speicherbereiche, wo sie jede Variable (je nach ihrer Vereinbarung im Programm) ablegt:

Vereinbarung

Speicherort

lokal

Stapel (stack)

global (in Objekten)

Halde (heap)

Modul

Modul[2]

Tabelle 4: Speicherbereiche in der JVM

Die lokalen Variablen einer Funktion (inklusive Parameter) werden im dem Methodenaufruf zugeordneten Stapeleintrag abgelegt; sie leben vom Aufruf bis zur Beendigung (z.B. durch eine Ausnahme) der Funktion. Ein nächster (ggf. rekursiver) Aufruf derselben Funktion bekommt einen neuen Stapeleintrag, d.h. alle Variablen werden neu angelegt; die Werte vom vorherigen Aufruf sind nicht verfügbar.

Die globalen Variablen[3] einer Klasse (d.h. die Objektvariablen) werden in der Halde angelegt, wenn ein Objekt (mit new) erzeugt wird. Daher kommen die globalen Variablen nur in Objekten vor. Sie leben, solange das Objekt lebt, d.h. bis es von der automatischen Speicherbereinigung entsorgt wird[4].

Die globalen Variablen eines Moduls (object) werden angelegt, wenn der Modul geladen wird und leben, bis er entladen wird.

Diese drei Speicherbereiche können im Objektdiagramm (falls dies zum Verständnis beiträgt) getrennt dargestellt werden.

Abbildung 5: Speicherbereiche im Objektdiagramm

Im Modul und auf dem Stapel liegen also Variablen (Quadrate mit Namen und Inhalt), auf der Halde liegen Objekte.

2. Darstellung von Variablen und Werten Inhaltsverzeichnis 4. Objekte

[1] Java Virtual Machine, die Laufzeitumgebung eines Java-Programms

[2] In der JVM-Spezifikation heißt dieser Speicherbereich method area; in Java werden hier statische Variablen gespeichert.

[3] sie heißen auch Attribute

[4] wenn es nicht mehr über Referenzen erreichbar ist


Version: 5. Dezember 2010

© Prof. Solymosi, 2010, Beuth-Hochschule für Technik Berlin