Vertiefung der Programmierung

Speicherverwaltung
Exkurs: Speicherverwaltung
Bild ist gemeinfrei
Was sind Variablen?
?
Was sind primitive bzw.
nicht-primitive Datentypen?
?
Was sind Objekte?
?
Was sind Referenzen?
?
Aus Sicht vom Speicher: Was ist der Unterschied zwischen einer Klasse und einem Objekt?
?
Speicherverbrauch
public class Circle {
private float x;
private float y;
private float radius;
public Circle(float xc, float yc, float r) {
this.x = xc;
this.y = yc;
this.radius = r;
}
}Wie viel Speicher
braucht ein
Circle-Objekt?
live
Speicherorganisation
Stack
(=Stapelspeicher)
Heap
(=Haldenspeicher)
- lokale Variablen
- Rückgabewerte
- Parameter (für Methoden)
- Objekte
- Compiler reserviert
und gibt Speicher frei
- Entwickler:in reserviert
- Garbage Collector gibt frei
Wo?
Wofür?
Wer?
Speicherorganisation (am Beispiel)
Tafel!
Speicherverbrauch und Vererbung
class Shape {
protected float x;
protected float y;
Shape(float xc, float yc) {
this.x = xc;
this.y = yc;
}
}class Circle extends Shape {
private float radius;
Circle(float xc, float yc, float r) {
super(xc, yc);
this.radius = r;
}
}(2) Wie viel braucht Circle?
(1) Wie viel braucht Shape?
Zusammenfassung
-
Primitive Datentypen (int, char, …) brauchen Speicher ➔ auf dem Stack
-
Objekte brauchen auch Speicher
➔ auf dem Heap -
Referenzen selbst brauchen keinen Speicher
➔ nur die Objekte, auf die sie zeigen -
Keine Referenz zeigt mehr auf ein Objekt:
➔ Objekt wird vom Garbage Collector entsorgt

Speicherverwaltung
By blackbill
Speicherverwaltung
- 51