Вопросы производительности 32-разрядной и 64-разрядной JVM? - PullRequest
1 голос
/ 16 марта 2010

Наша производственная среда запускает 3 32-разрядных Java 6 JVM на каждом сервере Windows 2003. Каждая куча имеет максимальную настройку (~ 1,25 ГБ). Мы рассматриваем возможность перехода на новые серверы и использования 64-битных JVM. Предположительно, тогда мы можем иметь одну 64-битную JVM на каждом сервере, которая заменит 3 32-битных JVM на каждом сервере из-за допущения гораздо большего размера кучи при использовании 64-битной JVM.

Кто-нибудь сделал это и извлек уроки?

Меня особенно беспокоят какие-либо соображения по поводу производительности и что делать, чтобы компенсировать это.

Ответы [ 2 ]

1 голос
/ 17 марта 2010

Требования к памяти будут возрастать, поскольку адресация объектов в 64-битной архитектуре обходится дороже. Сколько на самом деле зависит от вашего приложения. Предполагаемое значение будет 10% -20%, при условии, что вы не хэшируете 4 ГБ целых чисел ...

Вы также можете получить проблемы с конфликтом блокировок при блокировках в регистраторах, пулах потоков, пулах соединений, одиночных соединениях и т. Д. Вероятно, это не проблема, если ваше приложение ориентировано на базу данных, но если, например, ваше приложение хранит много сессий на карте, и доступ к этой карте много, вы можете получить проблемы. По моему опыту, спорная "стена" может прийти довольно быстро.

Однако есть только один способ узнать: ... проверить это.

0 голосов
/ 16 марта 2010

Я этого не делал, но это должно быть прекрасно, если вы не полагаетесь на 32-битный код JNI, для которого у вас нет 64-битной версии. Если все, что вы используете, это чисто Java, то проблем быть не должно.

...