Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java performance 64 bit

I've recently moved to a 64 bit OS on Windows Server 2008 Enterprise.

It seems that my java programs are running significantly slower than 32 bit on Windows 2003.

Would really any feedback.

Is this a known issue? Are there specific settings to improve performance?

(I'm aware that there is a small performance penalty for moving to 64bit but I'm seeing a significant performance hit).

like image 941
Dan Avatar asked Feb 08 '11 14:02

Dan


2 Answers

With 64-bit JVM, you may see different performance however you will see much more difference using a different OS on a different machine.

If you want to see if using 64-bit references is slowing you down, you can enable -XX:+UseCompressedOops which causes the 64-bit JVM to use 32-bit references but can still access 32 Gb of memory.

Another way to test this is to use a 32-bit JVM on your system. ;)

We have a latency sensitive system and see little performance advantage in using 32-bit references on a 64-bit JVM as it shifts every addres by 3 bits. The 32-bit JVMs smaller register set hurts us more than it helps.

EDIT: For more details

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/

like image 168
Peter Lawrey Avatar answered Oct 12 '22 01:10

Peter Lawrey


Yes it is, take a look at the Hotspot FAQ.

8 byte pointers increase the code and data size and slow down everything. If you are looking for performance and won't need a big heap, try a 32bit Java VM.

like image 22
flob Avatar answered Oct 12 '22 02:10

flob