Недавно, работая над веб-приложением JSF, используя Netbeans 6.8, я постоянно получаю PermGen: ошибки из памяти. Я также заметил, что это не связано с горячей заменой кода, как это предлагали некоторые люди на форумах; Обычно я перезапускаю свой локальный веб-сервер Tomcat 6.0, когда я передислоцирую код. Раньше это случалось со мной раз в несколько минут, но в последнее время это происходило постоянно. Обычно я не могу пройти более двух минут, прежде чем он сработает.Ошибка отладки Java Netbeans с ошибками памяти
Важное замечание, которое я сделал по этой проблеме, заключается в том, что это происходит только при запуске отладчика. Если я запустил сервер, регулярно, он будет работать бесконечно. Как только я запускаю режим отладки, эта проблема возникает.
Я пробовал все советы, которые я нашел до сих пор, для увеличения параметров памяти JAVA_OPT для Java в Tomcat; Я попытался увеличить доступную память для Netbeans в netbeans.conf. Еще не повезло. Если вы хотите увидеть конкретные изменения конфигурации, которые я сделал, я могу опубликовать это также.
Я также прочитал, что это может быть результатом утечки памяти в Java. Я попытался запустить профилировщик Netbean, но он, как правило, разбился, прежде чем я смог сделать что-нибудь действительно полезное. Кроме того, когда он выполнялся, все распределения объектов с нелепыми поколениями были вещами в java-библиотеках, или примитивы - char [] s были самым большим ядром памяти приложения, например, с самыми большими поколениями.
Мне бы очень хотелось узнать, есть ли у кого-то подобная проблема раньше, и если да, то как они ее решили. Это начинает серьезно препятствовать моей способности выполнять мою работу.
Спасибо за любую помощь.
Отображается netbeans.conf ** - J-XX: PermSize = 32m -J-XX: MaxPermSize = 200m **? – JoseK
У меня был этот набор ранее с тем же значением, 1024 м. Я изменил ваше предложение, установив его на 256 и 512 соответственно. Теперь он падает по-разному. В то время как он сразу же взорвался с ошибкой PermGen, теперь он обычно просто зависает, а иногда я получаю фактическую ошибку, и в других случаях он просто вешает бесконечно. – Lee
Сначала вам понадобится куча кучи, чтобы идентифицировать протекающие объекты и те, которые удерживают их в живых. Как только вы это узнаете, вы можете сразу решить проблему (если она достаточно проста, и вы знакомы с кодом, в котором находится виновник) или использовать профилировщик, чтобы определить места распределения утечек. Вы можете использовать jmap или visualvm (jvisualvm) для получения дампа кучи. Для анализа вы также можете использовать visualvm, но, конечно, вы можете выбрать любой инструмент, который вам нравится - например. MAT, если вы хотите придерживаться бесплатных инструментов. –