Увеличьте размер кучи в Java

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

14 ответов

Решение

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

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

java -Xmx6g myprogram

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

Можно увеличить размер кучи, выделенной 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

В приведенной выше строке мы можем установить минимальную кучу до 16 МБ, а максимальную - до 64 МБ.

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

java -Xmx6144M -d64

Флаг -d64 важен, так как он указывает JVM работать в 64-битном режиме.

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

Для файлов Jar:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar

Для файлов Java:

 java -Xms4096M -Xmx6144M ClassName

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

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

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

-XX: NewRatio = Размер кучи старого поколения: Размер кучи молодого поколения (Вы можете играть с этим соотношением, чтобы получить желаемое соотношение).

Можно увеличить размер кучи, выделенной JVM в Eclipse напрямую. В Eclipse IDE goto

Выполнить ----> Выполнить настройки ----> Аргументы

Введите -Xmx1g(используется для установки максимального размера, например, Xmx256m или Xmx1g...... m->mb g--->gb)

java -d64 -Xms512m -Xmx4g HelloWorld

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

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

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

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

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

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

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

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

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

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

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

У меня проблема с запуском файлов py в моем java-коде с использованием eclipse/STS, получение PyException из-за недостаточной памяти кучи jvm. Я внес изменения, указанные ниже, и могу решить эту проблему. Ниже представлена ​​конфигурация моей системы.

Вот те изменения, которые я внес в свое рабочее пространство, и вуаля, теперь оно работает отлично.

Да. Вы можете.

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

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

$ java -Xms512m -Xmx6144m JavaApplication

Устанавливает начальный размер кучи в 512 МБ и максимальный размер кучи в 6 ГБ.

Надеюсь, поможет..:)

Мне очень помогло увеличение объема кучи в файле eclipse.ini, который вы можете найти в папке eclipse. Там поменял на: -Xms2048m-Xmx4096m

Вот шаги, если кто-то хочет знать, как это сделать в Windows.

Другие вопросы по тегам