Каков максимальный размер кучи Java, который я могу безопасно использовать на 64-битной платформе Windows?

Мы используем 64-разрядный сервер Windows 2003 для запуска приложения WebSphere/J2EE (JVM также является 64-разрядным). Аппарат имеет 16 ГБ физической памяти. К сожалению, наше приложение интенсивно использует память, и нам потребуется некоторое время для добавления дополнительной памяти.

Я понимаю, что сама операционная система требует определенного объема памяти. Считаете ли вы, насколько безопасным (без пейджинга?) Максимальный размер кучи мы можем использовать, считая, что это единственное приложение, запущенное в системе?

3 ответа

Я думаю, что ответ будет зависеть от многих факторов, многие из которых трудно предсказать.

IMO, самый практичный способ определения размера безопасной кучи - методом проб и ошибок. Я бы начал с максимальной кучи размером около 15 ГБ, посмотрел статистику системной памяти/пейджинга и отрегулировал вверх или вниз.


Если у вас есть два банка памяти, например. поскольку у вас есть два процессора, вы можете обнаружить, что производительность вашего приложения значительно медленнее, если вы используете более половины своей памяти. Вы получите максимальную производительность из своей памяти, если используете около 3/4 вашего размера банка памяти.

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


Лучшая идея - экспериментировать... Проверьте первый ответ здесь... это поможет вам...

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

licensed under cc by-sa 3.0 with attribution.