Performanceprobleme bei Java unter Linux. Ein Beispiel an Eclipse…

April 4th, 2011 by Christophe Grévent Leave a reply »

Vor kurzem habe ich mir wieder mal die Entwicklung im Software Entwicklungsbereich angeschaut, und habe mir Eclipse geladen, ein paar Plugins zugefügt, und habe angefangen, zum Spass, ein bisschen etwas zu programmieren. In diesem Fall ein “Domain Specific Language” (DSL) mit Xtext…

Erster Eindruck: Ach, ist das Langsam. Also, hieß es: forschen wir mal nach, woher das kommt:

  • Erster Schritt: Welche jvm ist installiert? Funktioniert es mit einer Alternative besser? Kurz: nein. Lang: Ich benutze die offizielle Java Version, die als Ubuntu Paket geliefert wird. Ein Wechsel auf die Open JDK Alternative hilft hier auch nicht. Gij habe ich, ehrlich gesagt, nicht versucht – ich will die Kompatibilität zum Standard bewahren…
  • Mit einem bisschen “Forschungsaufwand” folgende Erkenntnis: Je nach Linux Variante funktioniert der Sun JDK nicht immer gleich. Insbesondere fehlt bei 64bits Linux die “client”-Komponente. Der Unterschied zwischen der Server- und der Client-Komponente ist, dass für Server alles langfristig ausgelegt ist: Ein Server funktioniert ein paar Stunden am Stück, es ist ein anderer Kompromiss nötig im Hinblick auf die Optimierung des Codes als für ein Client, bei dem ein Programm in einer Sekunde einmalig durchgeführt wird. Im Allgemeinen hängt es mit dem Grad der Optimierungen zusammen: 3s zum Kompilieren/Optimieren und dann 1s zum Durchführen ist in allem länger als 0s Kompilieren/Optimieren und 2s Durchführen… Eclipse ist ein Client, Tätigkeiten werden einmalig durchgeführt, und Ergebnisse geliefert. Die “server”-Einstellung ist also nicht wirklich hilfreich…
  • Und hiermit ist die Lösung eigentlich klar: Bei der virtuellen Maschine von Sun gibt es die Option “-Xint”… Diese bewirkt, dass der Java Code nicht kompiliert wird, sondern nur interpretiert wird, keine Optimierungen werden mehr durchgeführt.

So, nach der Analyse kommt die Zeit konkret zu werden:

  • In Eclipse das Menü “Windows -> Preference” auswählen. Dort zu “Java -> Installed JRE” gehen. Die virtuelle Maschine von SUN / Oracle sollte ausgewählt sein.

  • Diese auch selektieren, und dann “Edit…” auswählen… Dann bei dem Punkt “Default VM Arguments” den Wert “-Xint” zufügen. Im Bild steht noch eine weitere Option, die der virtuellen Umgebung auch noch ein wenig mehr Speicher gönnt…

  • “Finish” auswählen. Und, das war es schon! Bei mir läuft eclipse mit xtext problemlos auf meinem 64bits Ubuntu…

Viele Grüße,

Werbung

Other Posts related to this topic:

Leave a Reply


three × = 15