2009-10-14 5 views
211

Я работаю на сервере Windows 2003 (64-разрядный) с 8 ГБ оперативной памяти. Как увеличить максимум памяти кучи? Я использую флаг -Xmx1500m, чтобы увеличить размер кучи до 1500 Мб. Могу ли я увеличить память кучи до 75% физической памяти (6 ГБ кучи)?Увеличение размера кучи в Java

+2

Предполагаю, вы пытались увеличить кучу, но не смогли? Вы используете 64-битную JVM? –

+2

Вы пробовали '-Xmx6g'? Это не работает? Что вы наблюдали? –

+0

Спасибо за комментарий, но это не работает – Sunil

ответ

265

Вы можете увеличить до 4 ГБ на 32-битной системе. Если вы используете 64-битную систему, вы можете пойти выше. Не нужно беспокоиться, если вы выбрали неверно, если вы попросите 5g на 32-битной системе, java будет жаловаться на недопустимое значение и выйти.

Как и другие опубликованные, используйте флаги cmd-line - например.

java -Xmx6g myprogram 

Вы можете получить полный список (или почти полный список в любом случае), набрав java -X.

+16

Насколько я понял, фактический размер кучи Java будет приниматься с использованием 32b VM (в системе 32b или 64b - здесь важная часть VM) составляет около 2G. Кроме того, удивленный Аскер не первым искать и находить: http://stackoverflow.com/questions/1596009/java-lang-outofmemoryerror-java-heap-space и: http://stackoverflow.com/ вопросы/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error-64mb-heap-s – wsorenson

+2

ах, вы правы, конечно - на 32-битной системе вы можете обращаться только 2 Гб памяти. –

+0

Нужно ли для максимальной кучи и минимального размера кучи быть одинаковым? – user1747935

5

Могу ли я увеличить память кучи до 75% физической памяти (куча 6 ГБ).

Да, вы можете. На самом деле, если вы хотите, вы можете увеличить объем физической памяти.

Будет ли это хорошей идеей, это зависит от того, сколько еще работает в вашей системе. В частности, если «рабочий набор» приложений и служб, которые в настоящее время работают, значительно превышает доступную физическую память, ваша система может «трэш», проводя много времени, перемещая страницы виртуальной памяти на диск и с диска. Чистый эффект заключается в том, что система становится очень медленной.

+0

Спасибо за ваш комментарий Но как я могу увеличить.Plz вы можете дать команду. – Sunil

+0

Try -Xmx6000m. Он должен работать, если вы используете 64-битную версию Java. –

+0

Извините, босс все еще не работает – Sunil

25

На 32-битной JVM наибольший размер кучи, который вы теоретически можете установить, составляет 4 ГБ. Чтобы использовать большой размер кучи, вам нужно использовать 64-битную JVM. Попробуйте следующее:

ява -Xmx6144M -d64

-d64 флаг важно, так как это говорит JVM для работы в 64-битном режиме.

+0

Спасибо, босс, но он не работает в моей системе, есть что-то еще, что мне не хватает – Sunil

+3

Определите «не работает». Не запускается ли оно и не дает вам ошибку? Запускает ли он, но использует другой размер кучи? – Kevin

139

Можно увеличить размер кучи, выделяемую JVM с помощью опции из командной строки, здесь мы имеем 3 варианта

-Xms<size>  set initial Java heap size 
-Xmx<size>  set maximum Java heap size 
-Xss<size>  set java thread stack size 

java -Xms16m -Xmx64m ClassName 

В строке выше мы можем установить минимальную кучу, чтобы 16mb и максимальная кучного 64mb

9

можно увеличить размер кучи, выделенный в JVM затмений непосредственно в Eclipse IDE Goto

Run ----> Run ---- Конфигурация> Аргументы

Введите -Xmx1g (Он используется, чтобы установить максимальный размер, как Xmx256m или Xmx1g ...... м -> Мб г ---> GB)

+3

Просто чтобы добавить это, должен быть аргумент VM (eclipse дает вам два варианта). –

8

Java -d64 -Xms512m -Xmx4g HelloWorld

где -d64: позволит 64-разрядную JVM -Xms512m: Будет ли установить начальный размер кучи в 512 МБ -Xmx4g: Будет установлен максимальный размер кучи, как 4 Гб (здесь имя Java файл: HelloWorld.java)

0

Это работает только с 64-разрядной версией Java. Перейдите в Панель управления и щелкните значок Java.В маленьком окне панели управления Java нажмите на панель меню Java, а затем нажмите кнопку view.

Если у вас есть два Java-платформы, отключить предыдущую версию Java, а затем нажмите на время выполнения параметров текстового поля и записи -Xmx1024m или меньше, чем размер оперативной памяти. Не увеличивайте размер кучи, равный ОЗУ, иначе ваша система выйдет из строя.

+3

голос? за этот ответ ?? – madhairsilence

1

Пожалуйста, используйте следующую команду, чтобы изменить размер кучи до 6GB

export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m" 
+0

Если у меня есть 8G-память в моей системе, и я вижу из диспетчера задач, что 70% этого используется; возможно ли выделить память 6G в размер кучи java? –

0

Да. Ты можешь.

Вы можете увеличить свою память кучи до 75% физической памяти (6 ГБ кучи) или выше.

Поскольку вы используете 64 бит, вы можете увеличить размер кучи до нужной вам суммы. В случае, если вы используете 32bit, он ограничен 4 ГБ.

$ java -Xms512m -Xmx6144m JavaApplication 

Наборы вы с начальным размером кучи в 512MB и максимальное heapsize к 6GB.

Надеется, что это помогает .. :)

+0

Это кажется очень похожим на два опроса, проголосовавших за несколько лет назад. – Dukeling

1

Несколько людям указали конкретные ответы на размере кучи с вариантами Jvm из -Xms и -Xms. Я хочу указать, что это не единственный тип параметров памяти для jvm. В частности, если вы получаете стеки через потоки, тогда вы захотите увеличить размер стека, добавив дополнительный параметр, например -Xss8m.

Для этой проблемы варианты jvm примерно -Xms2g -Xmx6g -Xss8m будут решением.

Я делюсь этой информацией, так как мои поисковые запросы в Google о том, как увеличить объем памяти jvm, привели меня к этому решению, и решения не работали с большим объемом выделения памяти. Как только я выяснил, для каких конкретных настроек, мне удалось Google, как увеличить размер стека и найти недостающий параметр. :) Надеюсь, это спасет время других, так как это спасло бы мне массу времени. :)

2

Вы можете увеличить размер кучи, передавая параметры JVM -Xms и -Xmx, как показано ниже:

для JAR-файлов:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar 

Для файлов Java:

java -Xms4096M -Xmx6144M ClassName 

Приведенные выше параметры увеличивают InitialHeapSize (-Xms) до 4 ГБ (4096 МБ) и MaxHeapSize (-Xmx) до 6 ГБ (6144 МБ).

Но, то молодое поколение Размер кучи будет оставаться таким же и дополнительные HeapSize будут добавлены к старого поколения Размер кучи. До сравните размеры куклы Young Gen и кучи старого поколения, используйте -XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.

java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar 

-XX: NewRatio = Старый Gen Heap Size: Young Gen HeapSize (Вы можете играть с этим отношением, чтобы получить нужное соотношение).

Смежные вопросы