Netbeans mit 32bit Java auf 64bit Fedora Linux (GNOME)

Ich verdiene meine Brötchen ja damit, dass ich Java-Code eintippe. Damit das möglichst schnell geht brauche ich viel viel Speicher und eine schnelle CPU. Aktuelle Rechner sind prädestiniert für 64bit Betriebssysteme und Anwendungen. Allerdings hat die Java-Laufzeitumgebung ein Problem, nämlich dass die 64bit-Variante ziemlich deutlich mehr Speicher verbraucht als die 32bit-Version. Die Ursache liegt in den doppelt so großen Pointern (8 Byte statt 4 Byte) die für jedes Objekt (und das sind viele) erzeugt werden. In meiner Erfahrung fressen Netbeans zusammen mit Tomcat, Spring, Hibernate, etc. bei einer 64-bittigen VM schnell mal 2 GB wo die 32-Bit-Variante nur 1GB braucht. Zu dem Thema gibt es auch einen recht informativen Post.

Also habe ich auf meinem Rechner die x86_64-Variante von Java deinstalliert und eine 32bit-JVM installiert. Damit ist es leider noch nicht getan, da Netbeans nach dem Neustart ziemlich altbacken aussieht. Grund sind fehlende Bibliotheken von GNOME in der 32bit-Variante. Fehlen diese, so verwendet Java ein Standard-Swing-Layout statt der GTK-Themes.

Das Problem löst man das Paket gtk-engines installiert:

yum install gtk2-engines.i686

Jetzt ist Netbeans hübsch wie eh und je.
(Artikel von Christian ’softmetz‘ Kalkhoff, unter CC-BY-SA)

4 Antworten auf „Netbeans mit 32bit Java auf 64bit Fedora Linux (GNOME)“

    1. Also auf die Performance der fertigen Anwendung hat es keinen Einfluss, ob das Entwicklungssystem 32- oder 64-Bit ist. Ausschlaggebend ist immer die CPU, die die Anwendung ausführt.

      32-Bit Anwendungen sind auf 64-Bit CPUs im besten Fall gleich schnell, normalerweise aber geringfügig langsamer, da die CPU bei solchen Anwendungen in einer Art „Kompatibilitätsmodus“ arbeitet.

  1. Darüber hinaus fehlen der 64-bit VM zahlreiche Versionen des 32-Bit Pendants, die für den Desktop gedacht sind: Die Client-VM, die Code erst kompiliert, wenn er mehrfach ausgeführt wird (im Gegensatz zur Server VM die sofort JIT-kompiliert, Class-Data Sharing, durch das parallele Java-Prozesse insgesamt weniger RAM benötigen etc.

Kommentare sind geschlossen.