Aufrufstack und Heap Flashcards

1
Q

Speichermodell

A

° Aufrufstack:
Speicherplatz für lokale Variablen (und Zwischenergebnisse von Ausdrücken); wird stapelartig durch das Laufzeitsystem verwaltet

° Heap: Speicherplatz für dynamisch erzeugte Objekte (mit ihren Exemlarvariablen). Wird explizit vom Entwickler (z.B. new in Java) angefordert. Die Speicherfreigabe erfolgt explizit (z.B. in C++) oder durch den Garbage Collecotr (z.B. in Java).

° Programm: Speicherplatz für den Programmcode (die übersetzen Klassendefinitionen) werden durch das Betriebssystem realisiert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Heap

A

° dynamischer Speicher
° ist eine Speicherbereich, aus dem zur Laufzeit eines Programmes zusammenhängende Speicherabschnitte angefordert und in beliebiger Reihenfolge wieder freigegeben werden können
° Die Freigabe kann sowohl manuell als auch mit Hilfe einer automatischen Speicherbereinigung erfolgen
° Eine Speicheranforderung vom Heap wird auch dynamische Speicheranforderung genannt
° Kann eine Speicheranforderung wegen Speichermangel nicht erfüllt werden, kommt es zu einem Programmabbruch (in Java: OutOfMemoryError)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Aufrufstack

A

° angeforderte Speicherabschnitte werden strikt in der umgekehrten Reihenfolge wieder freigegeben, in der sie angefordert wurden
- automatischer Speicheranforderung (weniger Laufzeitkosten als bei dynamischer Speicheranforderung)
° Beii Spezialfällen kann der für den Stack reserverte Speicher ausgehen. Dann droht en Programmabbruch wegen Spaelüberlauf (in Java: StackOverflowError).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Objektdiagramme: Schnappschüsse vom Heap

A

° Objektdiagramm in Java ist ein Schnappschuss vom Heap eines laufenden Programms
° Es zeigt einen Ausschnitt des Objektgeflechts zur Laufzeit in der Virtual Machine, um einen bestimmten Aspekt zu verdeutlichen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Garbage Collector in Java

A

° Voraussetzungen:

  • Alle Objekte liegen im Heap
  • Auf dem Aufrufstack liegen entweder primitive Werte oder Referenzen auf Objekte
  • Nur Objekte, die vom Aufrufstack aus erreichbar sind für die Programmausführung relevant
  • Alle anderen Objekte im Heap sind “tote” Objekte

° Vorgehen:

  • Beobachtet regelmäßig die Referenzen auf dem Stack
  • Von da aus wird transitiv das gesamte Objektgeflecht durchgeschaut und erreichbare Objekte werden markiert
  • Anschließend werden alle nicht markierten Objekte im Heap gelöscht
  • Das Vorgehen aus Markieren und Abräumen ist im Englischen Mark and Sweep
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Methoden und Zustandsfelder zur Laufzeit

A

° Zur Übersetzungszeit gibt es jede Methode und Exemplarvariable nur einmal
° Se sind statisch in den Klassendefinitionen beschrieben
° Zur Laufzeit gibt es für jedes Exemplar einer Klasse einen eigenen Satz Zustandsfelder und logisch auch einen Satz Methoden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly