Как 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 Гб в зависимости от операционной системы.