codecentric

Java Performance

Performance und Stabilität gehören zu den wichtigsten nichtfunktionalen Anforderungen von Softwaresystemen.

Sie sind wichtige Faktoren für die Akzeptanz und Effizenz von Anwendungen und damit auch Treiber für ihren Erfolg.

Übertrifft der Erfolg die Erwartungen tritt die Skalierbarkeit und die damit verbundenen Herausforderungen an das Tageslicht.

Die Java Plattform bietet viele Werkzeugen, zur Analyse und Diagnose von Performanceproblemen und zur Durchführung von Performance Tuning.

In diesem Kompetenzbereich präsentieren wir Ihnen die wichtigsten Fakten und Informationen zum Thema Java Performance und Java Tuning.


JAVA MEMORY LEAK

Ein wichtiger Bestandteil von Java Tuning ist die Analyse von Speicherverwaltungsproblemen, Garbage Collection und Memory Leaks. Neben Java Profilern kommen Produktionsmonitore wie AppDynamics und Garbage Collection Analyse Werkzeuge zum Einsatz.

Häufig lässt sich der, durch die sogenannte “Stop-The-World” Garbage Collection verursachte, komplette Stillstand von einigen Sekunden auf wenige Millisekunden reduzieren, falls er nicht sogar komplett vermeidbar ist.

 


WEB PERFORMANCE OPTIMIZATION

Da viele Java Anwendungen eine wichtige Weboberfläche haben wird neben der Java Performance auch die sogenannte Web Performance Optimierung wichtig. Insbesondere bei Anwendungen die von einem großen Benutzerkreis genutzt werden macht es Sinn diesen Bereich zu optimieren um den Benutzern eine schnelle Oberfläche im Browser zu bieten und Netzwerkkommunikation zu reduzieren.

 


APPLICATION PERFORMANCE MANAGEMENT

Da Java Performance schlecht planbar ist, bieten sich gerade agile Entwicklungsverfahren und Testautomatisierungen an. Zum Testen verwendet man Lasttreiber, die definierte Testpläne beliebig oft gegen eine Testumgebung ausführen. Gemessen wird mit Diagnosewerkzeugen, welche sich möglichst selbstätig an die zu messende Umgebung anpassen und so schnell Bereiche identifizieren, die entweder generell oder erst unter Last (durch Nebenläufigkeitseffekte) langsam sind.

Während Java Troubleshooting und Tuning einmalige Aktivitäten sind, sind Performancetests bereits der erste Schritt in einer umfassenden Adressierung des Themas Application Performance Management, welches sich auch mit dem Betrieb und der Überwachung von Anwendungsperformance beschäftigt. Idealerweise wird ein kontinuierlicher Verbesserungsprozess eingeführt, der mit Produktionsüberwachungswerkzeugen kritische Stellen identifiziert und adressiert.