Вопрос

Я получаю эту ошибку при запуске или отладке моего GA / AI из MyEclipse:

Исключение в теме " main " java.lang.OutOfMemoryError: пространство кучи Java

eclipse.ini выглядит следующим образом:

-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en 
-XX:PermSize=128M 
-XX:MaxPermSize=256M

MyEclipse называется так:

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms1448M -Xmx1448M

поднимая настройки vm из этого:

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms80M -Xmx1024M

не имел никакого эффекта. Поэтому я пытаюсь заставить его сбросить кучу в файл, но помещаю это:

-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError

в аргументах программы не оказал никакого влияния. Как заставить что-то работать с дополнительным анализом использования памяти? Например, jstack в настоящее время недоступен на платформах Windows. И использование SendSignal не имеет эффекта, который я вижу.

снимок экрана

Это было полезно?

Решение

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

<Ол>
  • -XX: + HeapDumpOnOutOfMemoryError должен получить ваш дамп, если вы нажмете OOM.
  • Подключитесь к VisualVM (бесплатно) и используйте его графический интерфейс для принудительного создания дампа кучи
  • Используйте один из многих хороших коммерческих профилировщиков (JProfiler, YourKit, ...)
  • Используйте jmap (см. ниже), чтобы вызвать дамп из запущенного процесса
  • Если вы работаете с Java 6, jmap должен работать в Windows. Это может быть полезно, если вы хотите сбросить кучу, и вы не попали в OOM. Используйте диспетчер задач Windows, чтобы найти pid вашего Java-приложения, и в консоли запустите:

    jmap -dump:format=b,file=c:\heap.bin <pid>
    

    В дополнение к VisualVM, Eclipse Memory Analyzer (также бесплатный) может помочь вам проанализировать, что ест все пространство, как только у вас есть свалка.

    Другие советы

    -XX: + HeapDumpOnOutOfMemoryError следует поместить в VM Arguments " не " Программные аргументы "

    Вы можете отслеживать использование памяти с помощью JConsole.

    jstat также поможет .

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top