Как JVM может использовать более 4 ГБ памяти
У меня есть запрос на установку сервера Linux (желательно 64-битного сервера Ubuntu),
и Java (64 бит) на следующем компьютере:
- Intel Core2Quad Q8200 - 2,33 ГГц
- 8 ГБ DDR2 RAM
- 2x 320GB SATA HDD в мягком зеркале RAID1 (зеркало)
Проблема заключается в том, как настроить систему и Java, потому что мне нужна JVM для использования более 4 ГБ памяти.
Он не может быть распространен на многих виртуальных машинах. Имеются данные более 4 ГБ
и это должно быть в памяти, потому что жесткий диск медленный, и производительность имеет решающее значение.
Это вопрос конфигурации и производительности, и я заинтересован в комментариях, если у кого есть опыт?
Большое спасибо за то, что помогли мне в этом...
Ответы
Ответ 1
64-разрядная JVM не должна иметь никаких проблем с гигантскими кучами, что намного больше, чем ваша оперативная память. Просто увеличьте размер кучи при запуске JVM, например:
java -Xmx6g
Раньше вы указывали 64-битный флаг (с -d64
), но я не думаю, что это необходимо больше.
32-битные JVM могут управлять чем-то вроде 3 ГБ кучи.
Ответ 2
Ответ скаффмана, который обеспечивает необходимый флаг для выделения 6 ГБ памяти, является правильным. Если "g" не делает трюк, вы можете попробовать 6000 м (подробнее см. Ссылку ниже на флагах/платформах)
Для других параметров вы можете найти полезную информацию обо всех доступных параметрах для Java HotSpot VM здесь.
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
(доступны поведенческие и рабочие параметры. Ссылки на платформу также доступны на этой странице)
Ответ 3
JVM (особенно 64-битный) без колебаний занимает всю память, а 4Gb не проблема. Просто установите 64-разрядный Ubuntu, а пакет по умолчанию-jre также будет 64 бит.
Также обратите особое внимание на то, как ваши данные хранятся в памяти. Опять же, 64-битный JDK очень голоден для памяти из-за более высоких накладных расходов для указателей и т.д., Поэтому, если вы распределите эти 4Gb в небольших кусках в некоторой структуре данных, 8Gb будет недостаточно.
Ответ 4
Если вы устанавливаете 64-разрядный Ubuntu, я считаю, что
sudo apt-get install sun-java6-jdk
предоставляет вам 64-разрядную Java.
EDIT: 64-битная Java может предоставить вам столько памяти, сколько вам нужно, с помощью соответствующих переключателей. Это ограничение связано с 32-разрядной JVM, которая не может переходить через 2-4 Гб в зависимости от операционной системы.