2011-02-08 35 views
9

Kısa bir süre önce Windows Server 2008 Enterprise'da 64 bit işletim sistemine geçtim.Java performansı 64 bit

Benim java programlar gerçekten

, Windows 2003 tarihinde anlamlı herhangi bir geri bildirim daha yavaş 32 bit misiniz çalıştıran gibi görünüyor.

Bu bilinen bir sorun mu? Performansı iyileştirmek için belirli ayarlar var mı?

(64bit'e taşınmak için küçük bir performans cezası aldığının farkındayım, ancak önemli bir performans artışı görüyorum).

cevap

7

64 bit JVM ile farklı bir performans görebilirsiniz, ancak farklı bir makinede farklı bir işletim sistemi kullanarak çok daha fazla fark göreceksiniz.

64 bit referansların kullanılmasının sizi yavaşlattığını görmek isterseniz, 64 bit JVM'nin 32 bit referanslar kullanmasına neden olan ancak 32 Gb belleğe erişebilen -XX:+UseCompressedOops'u etkinleştirebilirsiniz.

Bunu sınamanın başka bir yolu, sisteminizde 32 bit JVM kullanmaktır. ;)

Gecikme duyarlı bir sistemimiz var ve her bitleri 3 bit olarak değiştirdiğinden, 64 bit JVM'de 32 bit referansların kullanılmasında çok az performans avantajı elde ediyoruz. 32-bit JVM'ler daha küçük kayıt seti bize yardım ettiğinden daha fazla zarar veriyor.

DÜZENLEME: Daha fazla bilgi

için

http://wikis.sun.com/display/HotSpotInternals/CompressedOops

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/

+0

64 bit JVM 32 bit referansları nasıl kullanıyor, ancak 32 Gb belleğe hala erişebiliyor? – Pacerier

+0

Her nesnenin 8 bayt sınırında (8 bayt hizalama) başlayacağını bilerek, 32 bit dizin kullanır. Böylece 2^32 * 8 bayt veya 32 GB'a kadar adreslenebilir. –

+0

ic, yardım için teşekkürler =) – Pacerier

3

Evet, Hotspot FAQ'a bakın.

8 baytlık işaretçiler, kod ve veri boyutunu artırır ve her şeyi yavaşlatır. Performans arıyorsanız ve büyük bir yığına ihtiyacınız yoksa, 32bit Java VM'yi deneyin.

+0

+1: Ben 64 bit JVM kullanarak her zaman kullandığınız anlamına geldiğini İlginç bilmiyordum sunucu sanal makinesi. – Powerlord

+0

Evet Bunu biliyorum - ama küçük bir kayıptan değil, yavaşlamadan bahsediyorum. – Dan

+0

Önceden Sun, Solairs/Linux JVM'yi varsayılan olarak '-server 'kullanmış ve Windows varsayılan olarak' -client' kullanmıştır. (Belki de iyi olduklarını düşündükleri bir önyargı;) 64-bit ile, tüm sürümleri varsayılan olarak '-server'i kullanır. –