java os x вопрос размера кучи - PullRequest
0 голосов
/ 10 августа 2011

Я просматривал размеры кучи JVM в OS X как в eclipse, так и в intellij, а также запускал приложения непосредственно через командную строку, и я вижу странное поведение, которое, я надеюсь, кто-то может объяснить.

  1. Если я установлю размер кучи jvm на что-то большое (например, более 1 ГБ) для eclipse, а затем запустите приложение hello world, которое выполняет

    System.out.println (Runtime.getRuntime (). MaxMemory ());

Я вижу, что он имеет 129957888 (128 МБ) в качестве максимальной памяти.

  1. Если я проведу тот же эксперимент в intellij, я получу тот же результат, но индикатор размера кучи в нижнем углу говорит, что я использую только 100 МБ из 2 ГБ, которые я могу.

  2. Если я просто запускаю java-тест -Xmx1024mb, то он говорит мне, что у меня достаточно максимального объема памяти.(В 8 раз больше)

Я пробовал это на 10,6 и 10,7, и я вижу то же самое, поэтому мне интересно, что происходит с IDE, не потребляющим какбольшой размер кучи, как я хочу.Я получаю кучу ошибок из-за нехватки места, когда у меня на машинах сидят бараны, и я нахожу это смешным.

Спасибо за любую помощь, которую может оказать любой.

1 Ответ

1 голос
/ 30 августа 2011

Звучит так, будто вы устанавливаете размер кучи для JVM среды IDE, а не для тех JVM, которые IDE запускают для запуска ваших программ.Было бы опасно, если бы IDE запускал ваш код в той же JVM, в которой он работал.

В Eclipse размер кучи по умолчанию, используемый при запуске программ, составляет 128 МБ.Вы можете переопределить это с помощью конфигурации запуска или отладки.

  1. Щелкните правой кнопкой мыши по классу Java с основным методом, который вы хотите запустить
  2. Выберите Run As -> Run Configurations ...
  3. Нажмите на вкладку Аргументы
  4. В разделе аргументов виртуальной машины введите -Xmx256m
  5. Нажмите Выполнить

Приведенная выше настройка устанавливает максимальную кучуразмер, используемый JVM до 256 МБ.

Выходные данные для вашего тестового класса теперь должны быть 265093120.

...