В дополнение к тому, что другие SO'ers уже предложили, вот мои 2 цента:
Всего наилучшего
Если вы хотите увеличить пространство кучи, вы можете использовать java -Xms <начальный размер кучи> -Xmx <максимальный размер кучи>
в командной строке. По умолчанию значения основаны на версии JRE и конфигурации системы. Вы можете узнать больше о параметрах виртуальной машины на веб-сайте Java .
Однако я бы порекомендовал профилировать ваше приложение, чтобы выяснить, почему ваш размер кучи «съедается». NetBeans включает в себя очень хороший профилировщик . Я полагаю, что он использует jvisualvm
под капотом. С помощью профилировщика вы можете попытаться найти, где создается много объектов, когда объекты собираются сборщиком мусора и т. Д.
1.- Да, но это в значительной степени относится ко всей памяти, используемой вашей программой.
2.- Да, см. Параметры Java VM
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
Т.е.
java -Xmx2g
назначьте вашему приложению максимум 2 гигабайта оперативной памяти
Но вы должны проверить, нет ли у вас утечки памяти первое.
3.- Это зависит от программы. Попробуйте определить утечки памяти. На этот вопрос было бы сложно ответить. В последнее время вы можете профилировать с помощью JConsole, чтобы попытаться выяснить, где будет ваша память
Вы можете посетить этот сайт, чтобы узнать больше о памяти в JVM: http://developer.streamezzo.com/content/learn/articles/optimization-heap-memory-usage
Мне показалось полезным использовать visualgc , чтобы посмотреть, как разные части модель памяти заполняется, чтобы определить, что нужно изменить.
Трудно определить, какая часть памяти была заполнена, следовательно, visualgc, поскольку вы можете просто изменить часть, в которой возникла проблема, а не просто скажи:
Хорошо! Я дам 1 ГБ ОЗУ для JVM.
Постарайтесь уточнить, что вы делаете, в конечном итоге вы, вероятно, найдете программу лучше для этого.
Чтобы определить, где может быть утечка памяти, вы можете для этого можно использовать модульные тесты, проверяя, какой была память до теста и после, и если есть слишком большое изменение, вы можете проверить его, но вам нужно выполнить проверку, пока ваш тест все еще выполняется .
Локальные переменные находятся в стеке. Пространство кучи занято объектами.
Вы можете использовать параметр -Xmx
.
Обычно пространство кучи используется каждый раз, когда вы выделяете новый объект с помощью new
и освобождаете некоторые время после того, как объект больше не упоминается. Поэтому убедитесь, что вы не храните ссылки на объекты, которые вам больше не нужны.
Чтобы увеличить размер кучи, вы можете использовать аргумент -Xmx при запуске Java ; например
-Xmx256M
Нет, я думаю, вы думаете о пространстве стека. Пространство кучи занято объектами. Способ увеличения -Xmx256m,
В большинстве случаев код не оптимизирован. Освободите те предметы, которые, по вашему мнению, в дальнейшем не понадобятся. Избегайте создания объектов в вашем цикле каждый раз. Попробуйте использовать кеши. Я не знаю, как дела у вашего приложения. Но в программировании также применяется одно правило нормальной жизни
. Профилактика лучше лечения. «Не создавайте лишних объектов»