Преимущества 64-битной платформы Java

Я абсолютно n00b в java-платформу Я хотел бы знать, нужно ли мне что-то менять в моем коде, чтобы получить преимущества 64-битной JRE?

или это что-то вроде того, когда я запускаю его с помощью "java -d64", он будет запускаться в каком-то турбо-режиме?

Ваша помощь высоко ценится

Ответ 1

Моя предыдущая версия, а не ложная, была быстро написанной упрощенной процедурой.

Переход от 32 до 64 бит автоматически не заставит ваше приложение работать быстрее, в некоторых случаях это может привести к обратному. На "отрицательной" стороне Выполнение удаления ссылок на указатели памяти в JVM может занять больше времени с 64-разрядными указателями, чем 32 бит. Полный сбор мусора и уплотнение кучи размером 16 ГБ, скорее всего, займет больше времени, чем с кучей в 2 ГБ.

С положительной стороны: Там 64-битные инструкции процессора более эффективны, чем 32-разрядные. 64-разрядная JVM позволит вам иметь размер кучи 2 ^ 32 раза больше, чем чуть меньше, чем 4 ГБ, который вы можете получить с 32 бит. (Если вы можете позволить себе купить этот объем оперативной памяти) Некоторые JVM могут работать со сжатыми ссылками, если у вас размер кучи менее 4 ГБ, что дает вам преимущество в 64-битных инструкциях без необходимости платить 64-разрядную цену отмены ссылки.

Если у вас хорошая JVM, я бы пошел на 64 бита независимо от размера кучи, просто будьте готовы, чтобы вам, возможно, потребовалось получить удар производительности за действительно большую кучу.

Ответ 2

Я не думаю, что 64-разрядная JVM получит производительность приложения? Как?

Фактически 64-разрядные процессоры немного медленнее. У них более сложный конвейер декодирования (обратная поддержка 32-разрядных операций). Им нужно больше пропускной способности памяти (все указатели имеют двойной размер)? Единственное, что у вас на 64-битном процессоре - это много оперативной памяти. И размер - это скорость, как мы знаем. Много оперативной памяти может повысить производительность некоторых приложений очень красиво (если приложение может его использовать). Так что 64 бит - нет. Много ОЗУ - определенно да.

Есть еще одна вещь, которую 64-битные процессоры могли бы сделать быстрее. Атомная запись/чтение 64-битных номеров. Если вы работаете с 64-разрядными номерами (длинными в java), то 64-битные процессоры будут лучше, потому что у них есть машинные инструкции CAS для работы с такими номерами.

Ответ 3

Нет, вам ничего не нужно менять. Нет встроенной выгоды, использующей 64 бит. Фактически, это сделает вашу программу более крупной в памяти, поскольку все указатели станут 64-битными, а не 32-битными.

Единственное преимущество заключается в том, что вы выполняете 64-битные вычисления, например, используя много "длинный" в вашем коде или если вашему приложению требуется память более 4 ГБ.

Ответ 4

Поскольку JVM, в котором выполняется код, должен вести себя одинаково (целые числа всегда содержат 32 бита и т.д.), ваш код гарантирован (теоретически) для запуска одинаково, независимо от того, на какой платформе вы его запускаете.

Разница в 32/64 бит заключается в том, как JVM может оптимизировать время выполнения. Таким образом, хотя исполняемый байт-код остается неизменным, он может (или не может) быть оптимизирован по-другому.

В двух словах 64-разрядная система, работающая под Java, может выполнять код быстрее, чем 32-разрядный эквивалент системы.

Ответ 5

Вам нечего менять. В отличие от C или С++ Java имеет спецификацию, написанную для нее, которая гарантирует, что int (и другие типы данных) всегда имеют одинаковую длину независимо от того, на какой платформе вы находитесь.

Ответ 6

Есть ли у вас JNI в коде приложения? Тогда, возможно, вам нужно беспокоиться о битных файлах с 32 по 64 бит.

32 или 64 все равно для вашего Java-кода. Аспекты производительности уже хорошо отражены в предыдущих плакатах.

Ответ 7

Да, вам ничего не нужно менять. Это JRE, который отличается от кода, который вы пишете.

Ответ 8

Я обнаружил, что 64-битные JVM были медленнее, чем 32-разрядные версии. Однако с последней версией обновления для Java 6 я видел, что многие из моих тестов немного быстрее с 64-битной версией и 32-разрядной версией. В любом случае разница составляет от 5% до 10%.

Независимо от того, использует ли ваша программа 32-разрядная или 64-разрядная версия, вы можете использовать JVM. Как уже упоминалось, вам нужно проверить, что у вас есть соответствующие общие библиотеки. (или в идеале нет)

Основное отличие заключается в том, что вы можете использовать больше памяти esp, если вам нужно 4 ГБ или более.

Ответ 9

Попробуйте следующее:

public class Benchmark {
public static void main(String args[]) {
long time = System.currentTimeMillis();
for (int a = 1; a < 900000000; a++) {
    for (int b = 1; b < 20; b++) {
    }
}
long time2 = System.currentTimeMillis() - time;
System.out.println("\nTime counter stopped: " + time2);

}

В 32 и 64 бит и смеяться над разницей.