Увеличьте размер кучи в 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