Debuggen von Java Anwendungen - auf der Überholspur!

Posted on March 15th, 2008 by Reiner.
Categories: Deutsch, Computers.

English article at  Bad Habits Die Hard - How to Prepare Java Apps for Full Speed Debugging.

Beim Instrumentieren einer Java Anwendung für (auch Remote) Debugging werden oftmals VM-Parameter verwendet, die die Anwendung spürbar verlangsamen, da sie den Just-In-Time Compiler der Java VM ausschalten, z.B.:

-Xdebug
-Xnoagent
-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
-Djava.compiler=NONE

Ab Java 1.4 ist es weder erforderlich noch per se ratsam, den Java Just-In-Time Compiler auszuschalten.

Die Anweisung -Djava.compiler=NONE sollte einfach entfallen:

-Xdebug
-Xnoagent
-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

So kann eine Anwendung für das Debuggen vorbereitet werden, ohne dass ihre Performance darunter leidet, solange sie nicht aktiv debugged wird. Und selbst während des Debuggens wird die Anwendung durch den Just-in-Time Compiler beschleunigt. Dies ist in Test- (oder sogar Produktions-) Umgebungen sehr willkommen, die sowohl performant ausgeführt werden sollen, als auch eine bei Bedarf zu öffnenende Hintertür enthalten sollen, durch die Probleme untersucht werden können.

Sogar in aktuellen Posts wird das -Djava.compiler=NONE Antipattern verbreitet, wie z.B. bei ImageJ Plugins in Eclipse entwickeln.

Und das böse -Djava.compiler=NONE versteckt sich nicht nur in vielen Konfigurationsdateien und Werkzeugen, sondern hat es sogar geschafft, bis in Java 6 selbst vorzudringen. Siehe -Djava.compiler=NONE and -Xdebug anachronisms unanachronistically disable full-speed debugging in Suns Bug Database.

0 comments.

Leave a comment

Comments can contain some xhtml. Names and emails are required (emails aren't displayed), url's are optional.