Performanzaspekte bei der Programmierung mit Java - Eine eingehende Untersuchung von Threads, Garbage Collection und Objekt-Pools

Kreher, Ulrich (2002) Performanzaspekte bei der Programmierung mit Java - Eine eingehende Untersuchung von Threads, Garbage Collection und Objekt-Pools. Diploma thesis, Universität Ulm.

[thumbnail of Kreh02.pdf] PDF - Registered users only - Requires a PDF viewer such as GSview, Xpdf or Adobe Acrobat Reader
Download (2MB)

Abstract

Die Programmiersprache Java™ erfreut sich steigender Beliebtheit, auch was die Realisierung komplexer Software-systeme anbelangt. Gleichzeitig wird es aber auch wegen seiner schlechten Performanz kritisiert. Die Hauptursache hierfür wird in der automatischen Speicherbereinigung (Garbage Collection) vermutet, was daran liegt, daß nur sehr wenig über sie bekannt ist. Dasselbe gilt auch für Threads. Für sie gibt es in Java zwar eigene Objekte, es ist allerdings oftmals unklar, wie diese mit Betriebssystem-Threads zusammenhängen. Deshalb werden beide Aspekte in dieser Arbeit eingehend untersucht. Dabei geht es aber nicht nur um die Darstellung der internen Funktionsweise der Java-Laufzeitumgebung sondern auch darum, welchen Einfluß die Programmierung auf die Performanz hat. Dazu werden zahlreiche Hinweise und Richtlinien gegeben, die bei der Erstellung und Implementierung eines performanten Softwaresystems in Java helfen können. Ein Aspekt ist der Softwareentwicklungsprozeß selbst. Performanz ist keineswegs erst in der Implementierung relevant, sondern sollte erklärtes Ziel aller Entwicklungsphasen sein. Dies gilt besonders beim Einsatz von Java, da diese Sprache nicht dieselben Optimierungsmöglichkeiten bietet wie herkömmliche Sprachen (z.B. C++). Nebenläufigkeit ist eine Möglichkeit zur Steigerung der Leistungsfähigkeit. In Java kann dies sehr leicht erreicht werden, da Threads sehr gut in die Sprache integriert sind. Allerdings sind Threads nicht so plattformunabhängig wie es im Zusammenhang mit Java vielleicht erwartet wird. Zudem ist bei ihrer Verwendung auf korrekte Synchronisation zu achten, damit keine Inkonsistenzen und Ver-klemmungen auftreten. Der Betrachtung von Threads schließt sich eine detaillierte Darstellung der Garbage Collection an. Da das in einer Java Virtual Machine (JVM) eingesetzte Verfahren nicht genau spezifiziert und Gegenstand zahlreicher Optimierungs-bemühungen ist, gibt diese Arbeit auch einen Überblick über alle gebräuchlichen Speicherbereinigungsverfahren. Dadurch werden die Einflußmöglichkeiten des Programmierers auf die Garbage Collection verständlich. Besonders deutlich wird dies bei Objekt-Pools. Diese sollen eigentlich die Performanz verbessern, bewirken aber häufig genau das Gegenteil. Abschließend erfolgt ein Ausblick auf weitere Performanzaspekte, die insbesondere bei der Implementierung eines Workflow-Management-System (WfMS) in Java relevant sind.

Item Type: Thesis (Diploma)
Subjects: DBIS Teaching > Internal Work
Divisions: Faculty of Engineering, Electronics and Computer Science > Institute of Databases and Informations Systems > DBIS Research and Teaching > DBIS Teaching > Internal Work
Depositing User: Eva Mader
Date Deposited: 17 Mar 2009 23:01
Last Modified: 14 Oct 2011 10:27
URI: http://dbis.eprints.uni-ulm.de/id/eprint/512

Actions (login required)

View Item
View Item