Blog

Alle Beiträge mit dem Tag JVM

Classpath considered harmful

„The classpath is dead“ 

— Mark Reinhold (Chief Architect Java Platform Group, Oracle)

Als diese Aussage 2009 die Runde machte, erregte sie einiges Aufsehen in der Java-Community. Seitdem sind fünf Jahren vergangen. Nach den Maßstäben technologischer Entwicklung also eine Ewigkeit, aber dennoch ist der Class Path in den meisten Java-Projekten immer noch sehr lebendig und die damit einhergehenden Probleme sind nach wie vor weit verbreitet. Eine Besserung ist nicht in Sicht: Auf der einen Seite gibt es Lösungsansätze, die sehr lange existieren, aber aus verschiedenen Gründen keine Verbreitung gefunden haben. Und auf der anderen Seite hat das Projekt einer standardisierten Lösung für das gesamte Ökosystem seit 2006 eine sehr lange und erfolglose Historie hinter sich und ist nun erst einmal auf Java 9 (!) vertagt. Angesichts dieser Perspektive scheint es, als müsste man sich mit der Situation abfinden. Oder doch nicht?
weiterlesen

Java Heap-Dump-Analyse

Jeder von Euch kennt sicherlich die Situation, dass Java Anwendungsserver sehr viel Speicher benötigen und dort im schlechtesten Fall sogar OutOfMemory-Exceptions auftreten können. Die Ursachen für die hohen Speicheranforderungen können dabei sehr vielfältig sein: sie reichen von konstant wachsenden Systemen über speicherhungrige Anwendungen, die große Mengen an Daten zwischenspeichern, bis zu Fehlerverhalten der Anwendungsserver.

Oftmals wird bei Speicherproblemen leider oft noch der „einfachste“ Weg gewählt, indem dem Anwendungsserver mehr Speicher zugeteilt und nicht weiter nach den eigentlichen Ursachen des hohen Speicherverbrauchs geforscht wird. Dabei ist bei diesem Vorgehen in der Regel unklar, ob damit das ursächliche Problem behoben oder das erneute Auftreten des Problems einfach nur zeitlich herausgezögert wird.

Ein probates Mittel, solche Speicherprobleme zu analysieren und zu beheben, sind dabei Heap-Dumps. Bei einem Heap-Dump handelt es sich dabei um ein zu einem definierten Zeitpunkt erstelltes Speicherabbild der JVM eines Java Programms. Seit der Java-Version 1.6 existiert im JDK ein kleines Tool, das die Erstellung von Heap-Dumps zur Laufzeit des Anwendungsservers ermöglicht.

weiterlesen