Подтвердить что ты не робот

Есть ли максимальное число, которое вы можете установить Xmx при попытке увеличить jvm-память?

Есть ли макс. размер, который вы можете установить Xmx? Я установил его на 1024 м, и затмение откроется нормально. Когда я устанавливаю его выше 1024, eclipse не открывается, и я получаю ошибку "jvm terminated. Exit code = -1"...

Я делал это, потому что я продолжаю получать "java.lang.OutOfMemoryError: Java heap space". Я читаю файл 35.5Mb.txt, и эта ошибка возникает, когда она просто читается в файле, используя цикл "while((line = reader.readLine()) != null)". Я бы подумал, что 1024mb было бы достаточно. Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Да, есть максимум, но он зависит от системы. Попробуйте и посмотрите, удвоившись, пока не нажмете предел, а затем ищите вниз. По крайней мере, с Sun JRE 1.6 на linux вы получаете интересные, если не всегда информационные сообщения об ошибках (peregrino - нетбук с 32-разрядным ubuntu с 2G RAM и без обмена):

peregrino:$ java -Xmx4096M -cp bin WheelPrimes 
Invalid maximum heap size: -Xmx4096M
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.

peregrino:$ java -Xmx4095M -cp bin WheelPrimes 
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified

peregrino:$ java -Xmx4092M -cp bin WheelPrimes 
Error occurred during initialization of VM
The size of the object heap + VM data exceeds the maximum representable size

peregrino:$ java -Xmx4000M -cp bin WheelPrimes 
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

(experiment reducing from 4000M until)

peregrino:$ java -Xmx2686M -cp bin WheelPrimes 
(normal execution)

Большинство из них самоочевидны, кроме -Xmx4095M, что довольно странно (возможно, сравнение с подписью/без знака?), и что он утверждает, что резервирует 2686M на 2-Гбайт-машине без свопа. Но он намекает, что максимальный размер 4G не 2G для 32-битной виртуальной машины, если ОС позволяет вам так много решать.

Ответ 2

Я думаю, что 32-разрядная JVM имеет максимум 2 ГБ памяти. Однако это может быть устаревшим. Если я правильно понял, вы установили -Xmx на запуск запуска Eclipse. Если вы хотите увеличить объем памяти для программы, запускаемой из Eclipse, вы должны определить -Xmx в "Run- > Run configurations..." (выберите свой класс и откройте вкладку "Аргументы" в меню "Параметры VM" ), и НЕ при запуске Eclipse

Изменить: данные, которые вы просили. в Eclipse 3.4

  • Run- > Run Configurations...

  • Если ваш класс не указан в списке слева в поддереве "Java-приложение", нажмите "Новая конфигурация запуска" в верхнем левом углу

  • справа, вкладка "Главная" убедитесь, что проект и класс являются правильными.

  • выберите вкладку "Аргументы" справа. у этого есть две текстовые области. один для аргументов программы, которые входят в массив args [], предоставленный вашему основному методу. другой - для аргументов VM. положите в один с аргументами VM (ниже iirc) следующее:
    -Xmx2048m

    Я думаю, что 1024 м должны быть более чем достаточно для того, что вам нужно!

  • Нажмите "Применить", затем нажмите "Выполнить"

  • Должно работать:)

Ответ 3

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

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

Ответ 4

Я думаю, что это около 2 ГБ. Хотя ответ Пита Киркхэма очень интересен и, вероятно, имеет правду, я выделил выше 3 ГБ без ошибок, однако на практике он не использовал 3 ГБ. Это может объяснить, почему вы могли выделить 2,5 ГБ на 2 ГБ оперативной памяти без места подкачки. На практике он не использовал 2,5 ГБ.