14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

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.

5.4 E<strong>in</strong>e JVM als Baukasten<br />

nach gleichem Muster zum Beispiel <strong>in</strong> die Typprüfung <strong>in</strong>tegriert werden. Anstelle e<strong>in</strong>es Aufrufs der<br />

Objektlayoutverwaltung wird e<strong>in</strong>e feste Position <strong>in</strong>nerhalb der Objektdaten verwendet.<br />

Das Austauschen der Objektlayoutverwaltung bedeutet somit, dass alle Bauste<strong>in</strong>e, welche die<br />

Abbildung verwenden, ausgetauscht werden müssen. Ist bei kompiliertem Code das Layout der Objekte<br />

im erzeugten Code festgehalten, so muss auch der Code neu erstellt werden.<br />

5.4.3.2 Objekterzeugung<br />

Die Objekterzeugung ist für die Erstellung von Objekten zuständig. Sie arbeitet eng mit der Speicherverwaltung<br />

zusammen, da für jedes neu erzeugte Objekt Speicher angefordert werden muss. Die<br />

Größe des benötigten Speicherplatzes bestimmt sich aus Anzahl und Typ der Felder und der Größe der<br />

zusätzlichen Verwaltungsstrukturen. Daher wird auf die Objektlayoutverwaltung zurückgegriffen, um<br />

die <strong>in</strong>itiale Struktur des Objekts zu erstellen.<br />

Abbildung 5.7: Abhängigkeiten der Objekterzeugung<br />

Die Objekterzeugung wird von allen Bauste<strong>in</strong>en benötigt, welche Objekte anlegen möchten. Hauptsächlich<br />

ist das die Ausführungse<strong>in</strong>heit, welche während der Interpretation der Anwendung entsprechend<br />

Objekte anlegt. Außerdem werden von Systemdiensten Objekte erzeugt, um Fehler mithilfe<br />

des Ausnahmemechanismus an die Anwendung weiterzuleiten. Beispiele hierfür s<strong>in</strong>d die Typprüfung<br />

(ClassCastException) oder die Speicherverwaltung (OutOfMemoryError).<br />

Durch gezieltes Design e<strong>in</strong>er Anwendung kann die Erzeugung von Objekten auf die Startphase der<br />

Anwendung beschränkt werden. Dann ist e<strong>in</strong>e Auslagerung der Objekterzeugung nach dieser Phase<br />

s<strong>in</strong>nvoll, zumal gleichzeitig auch das Auslagern der Speicherverwaltung <strong>in</strong> Betracht zu ziehen ist. Das<br />

Identifizieren solcher Phasen kann mithilfe e<strong>in</strong>er Programmflussanalyse erfolgen.<br />

5.4.3.3 Speicherbere<strong>in</strong>igung<br />

Die Speicherbere<strong>in</strong>igung, auch als Garbage Collection bezeichnet, wird benötigt, um Objekte zu f<strong>in</strong>den,<br />

welche nicht mehr referenziert werden. Diese Objekte können nicht mehr erreicht und somit gelöscht<br />

werden. Um unerreichbare Objekte zu f<strong>in</strong>den, muss die Speicherverwaltung die Felder der Objekte<br />

kennen; diese Information bekommt sie von der Klassenverwaltung. Enthält e<strong>in</strong> erreichbares Objekt<br />

e<strong>in</strong>e Referenz, so muss die Speicherbere<strong>in</strong>igung das referenzierte Objekt von der Objektverwaltung<br />

anfordern. Objekte, die nicht erreichbar s<strong>in</strong>d, werden freigegeben. Dazu wird der Speicher, der durch<br />

diese Objekte belegt war, der Speicherverwaltung gemeldet.<br />

Die Speicherbere<strong>in</strong>igung wird von der Speicherverwaltung aufgerufen, wenn der verfügbare Speicher<br />

e<strong>in</strong>en bestimmten Grenzwert unterschreitet oder wenn e<strong>in</strong>e Anforderung nicht erfüllt werden kann. Die<br />

Speicherverwaltung kann auch periodisch aktiviert werden oder während das System im Leerlauf ist.<br />

Da es <strong>in</strong> Java ke<strong>in</strong>e Möglichkeit gibt, Objekte explizit zu löschen und somit Speicher explizit<br />

wieder frei zugeben, ist e<strong>in</strong>e Speicherbere<strong>in</strong>igung immer notwendig, wenn dynamisch Objekte angelegt<br />

111

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!