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)
Ist die Performance unter 32 Bit dann automatisch auch besser, schlechter oder gleich?
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.
Hi,
eventuell mal Compressed OOPS (-XX:+UseCompressedOops) ausprobieren,
das könnte auch helfen.
http://www.oracle.com/technetwork/java/javase/6u14-137039.html
Andreas.
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.