Meine vorherige Version, obwohl nicht falsch, war eine schnelle schriftliche Vereinfachung.
Wenn Sie von 32 auf 64 Bits umschalten, wird Ihre Anwendung nicht automatisch schneller ausgeführt. In einigen Fällen führt dies möglicherweise zum Gegenteil. Auf der "negativen" Seite Das Rückgängigmachen der Referenzierung von Speicherzeigern in der JVM kann bei 64-Bit-Zeigern länger als 32 Bit dauern. Eine vollständige Speicherbereinigung und Komprimierung eines 16-GB-Heaps dauert wahrscheinlich länger als bei einem 2-GB-Heap.
Auf der positiven Seite: Es gibt 64-Bit-Prozessor Anweisungen, die effektiver sind als die 32-Bit-Prozessoren. 64-Bit-JVM ermöglicht es Ihnen, eine Heap-Größe von 2^32-mal größer als die, etwas weniger als 4 GB, die Sie mit 32-Bit erhalten können. (Wenn Sie es sich leisten können, diese Menge an RAM zu kaufen) Einige JVMs können mit komprimierten Referenzen arbeiten, wenn Sie eine Heap-Größe von weniger als 4 GB haben, was Ihnen den Vorteil von 64-Bit-Anweisungen bietet, ohne den 64-Bit-Preis zu entrichten .
Wenn Sie eine gute JVM haben, würde ich auf 64 Bits gehen, egal, die Heap-Größe, nur darauf vorbereitet, dass Sie einen Leistungshit für einen wirklich großen Haufen nehmen müssen.
Gibt es keinen Vorteil, zumindest unter Windows, die Möglichkeit, mehr Speicher als etwa 1,5 GB zu verwenden? Es gibt einige solche Einschränkungen für einen 32-Bit-Java-Prozess. http://mystyleit.com/blogs/mystureit/archive/2009/05/27/32bit-windows-memory-and-java.aspx – Jonik
Sind nicht die neuesten 64-Bit-JVMs ein wenig schlauer beim Zuweisen von Referenzen obwohl? Das heißt, es werden nur 32-Bit-Referenzen verwendet, wenn nicht das volle 64-Bit benötigt wird. Ich glaube, ich habe das irgendwo gelesen. –