ArtikelJanuar 2010

Timeout ist nicht gleich Timeout

Letzte Woche mussten ich einen Webservice-Client erweitern, sodass er die Verarbeitung abbricht, wenn die Gegenseite nicht schnell genug ein Ergebnis liefert. Das Ganze ist mit spring-webservices implementiert und verwendet die WebServiceTemplate Klasse. (weiterlesen…)

Eugen Melnichuk

 

Eine Retrospektive auf 2009

2009 ist nun schon ein paar Tage vorbei, so daß vielleicht ein kleiner Jahresrückblick angemessen wäre. Kürzlich sagte ich noch zu jemandem: “Och ich bin erst gerade mal anderthalb Jahre bei codecentric”, aber dies ist doch schon ein beachtlicher Zeitraum. 2009 war ein sehr ereignisreiches Jahr; es gibt sehr viel auf das es sich lohnt zurückzublicken. Zum Beispiel auf 85 Blogeinträge. Aber es gibt auch vieles in der Zukunft auf das es sich hinzuarbeiten lohnt. Ich bin sehr stolz auf unser Team und das was wir erreicht haben. (weiterlesen…)

Fabian Lange

 

Das Java Memory Modell (1. Akt)

Eine der großen Stärken der Java Plattform ist die automatische Speicherverwaltung. Jeder der schon mal mit C/C++ programmiert hat und sich um die Allokation und Freigabe von Speicher selber kümmern musste, weiß diese Eigenschaft der Java Runtime zu schätzen. Die in der Praxis häufig aufgetretenen Probleme, dass Speicher zu früh  (corrupted pointer) oder unvollständig (memory leak) freigegeben wurden sind damit grundsätzlich behoben. Die Frage ist: Warum schreibe ich dann überhaupt diese Blog Einträge?

Leider kann auch eine implizite Speicherverwaltung, wie Java sie hat, nicht verhindern, dass man Anwendungen programmiert, die zu Speicher Problemen führen, obwohl eine manuelle Allokation in Java nicht möglich und per Spezifikation ausgeschlossen ist. Das Resultat solcher Fehler ist dann in der Regel eine Ausnahme vom Typ: java.lang.OutOfMemoryError.

(weiterlesen…)

Mirko Novakovic

 

Java OutOfMemoryError – Eine Tragödie in sieben Akten

Jeder Java Programmierer wird früher oder später über folgende Ausnahme stolpern: java.lang.OutOfMemoryError.

Mit ein wenig Glück passiert das noch während der Entwicklung. Tritt diese Ausnahme aber im produktiven Betrieb auf, erhält man schnell eine ungewollte Aufmerksamkeit im Management, da ein Java OutOfMemoryError in der Regel gleichbedeutend mit einem Produktionsausfall ist. Die Ursachen für diesen Fehler in der JVM sind vielfältig und nicht immer einfach zu analysieren. In der Praxis sehe ich täglich, dass Server jede Nacht neu gestartet werden um kontinuierlich anwachsendem Speicher Herr zu werden oder aber Anwendungen regelmäßig aus vermeindlich unerklärlichen Gründen ausfallen, auch wenn ein java.lang.OutOfMemoryError im Log darauf hin weist, dass der Hunger der Anwendung nach mehr Speicher einfach zu groß war.

(weiterlesen…)

Mirko Novakovic