09.05.2014 Aufrufe

Leben und Sterben eines Objekts - beim O'Reilly Verlag

Leben und Sterben eines Objekts - beim O'Reilly Verlag

Leben und Sterben eines Objekts - beim O'Reilly Verlag

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Konstruktoren <strong>und</strong> GC<br />

Instanzvariable<br />

Ich habe mal einen Aufklärungsfilm darüber gesehen.<br />

Sieht nach einem ziemlich grausamen Ende<br />

aus. Wenn die Methode endet, weil sie auf die<br />

schließende geschweifte Klammer stößt, wird der<br />

Frame im Wortsinn vom Stack geblasen! Das muss<br />

schon schmerzhaft sein.<br />

Ich lebe mit den Objekten auf dem Heap. Na,<br />

nicht mit den Objekten, sondern eigentlich in<br />

einem Objekt. Dem Objekt, dessen Zustand ich<br />

festhalte. Ich muss zugeben, dass das <strong>Leben</strong> auf<br />

dem Heap eine ziemlich luxuriöse Angelegenheit<br />

sein kann. Viele von uns fühlen sich schuldig,<br />

insbesondere während der Feiertage.<br />

Okay. Theoretisch ja. Wenn ich eine Instanzvariable<br />

von Halsband bin <strong>und</strong> das Halsband von der GC<br />

geschluckt wird, werden auch die Instanzvariablen<br />

von Halsband weggeworfen wie die Zeitung vom<br />

Vortag. Aber mir hat man erzählt, das würde fast<br />

nie passieren.<br />

Sie lassen uns trinken?<br />

Lokale Variable<br />

wir <strong>und</strong> der Wert, den wir festhalten, sicher. Aber<br />

es ist eine zweifelhafte Freude, wenn unser Frame<br />

wieder läuft. Einerseits sind wir endlich wieder<br />

aktiv. Andererseits nagt die Uhr wieder an unseren<br />

kurzen <strong>Leben</strong>. Je länger unsere Methode läuft, um<br />

so näher kommen wir dem Ende der Methode.<br />

Und wir wissen alle, was dann passiert.<br />

Das musst du mir nicht sagen. Normalerweise<br />

verwendet man den Begriff entfernen, wie in »der<br />

Frame wurde vom Stack entfernt«. Das klingt so<br />

sachlich, so nach Hausputz. Aber du hast den Film<br />

ja gesehen. Warum reden wir nicht ein bisschen<br />

über dich? Ich weiß, wie mein kleiner Stack-Frame<br />

aussieht, aber wo lebst du eigentlich?<br />

Aber ihr lebt nicht immer so lang wie das Objekt,<br />

das euch deklariert hat, oder? Nehmen wir<br />

beispielsweise an, es gibt ein H<strong>und</strong>-Objekt mit<br />

einer Halsband-Instanzvariable. Stell dir vor, du<br />

wärst eine Instanzvariable des Halsband-<strong>Objekts</strong>.<br />

Vielleicht eine Referenz auf eine Namensschild-Instanz<br />

oder so was. Und du sitzt da glücklich in dem<br />

Halsband-Objekt, das glücklich in dem H<strong>und</strong>-Objekt<br />

sitzt. Aber ... was passiert, wenn der H<strong>und</strong> ein<br />

neues Halsband will oder seine Halsband-Instanzvariable<br />

auf null setzt? Dann kann das Halsband-<br />

Objekt für die GC ausgewählt werden. Und wenn<br />

du eine Instanzvariable in Halsband bist <strong>und</strong> das<br />

ganze Halsband aufgegeben wird, was passiert dann<br />

mit dir?<br />

Und das hast du geglaubt? Das erzählen die uns,<br />

damit wir motiviert <strong>und</strong> produktiv bleiben. Aber<br />

vergisst du da nicht etwas? Was ist, wenn du eine<br />

Instanzvariable in einem Objekt bist <strong>und</strong> dieses<br />

Objekt nur von einer lokalen Variablen referenziert<br />

wird? Wenn ich die einzige Referenz auf das Objekt<br />

bin, in dem du steckst, nehme ich dich mit, wenn<br />

ich gehe. Ob es dir gefällt oder nicht, unser Schicksal<br />

kann verknüpft sein. Deswegen schlage ich vor,<br />

dass wir den ganzen Kram jetzt vergessen <strong>und</strong> uns<br />

besaufen, so lange wir die Zeit dazu haben. Carpe<br />

RAM <strong>und</strong> alles.<br />

Sie sind hier 265

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!