Это из-за постоянной загрузки класса.
Java хранит байтовый код класса и все константы (например, строковые константы) в постоянной куче, которая не является сборкой мусора по умолчанию (что имеет смысл в большинстве ситуаций, потому что классы загружаются только один раз в течение всего срока службы приложения).
В приложениях, которые часто загружают классы в течение всей жизни, которые являются:
- веб-серверов и серверов приложений во время горячего перевода;
- IDE при запуске разработанных приложений (каждый раз, когда вы нажимаете кнопку «Пуск» в Netbeans или затмеваете, он загружает классы вашего приложения на новый);
- и т. Д. это поведение не подходит, потому что куча заполняется в конечном итоге.
Чтобы предотвратить эту ошибку, вам необходимо включить постоянную сборку мусора.
Я использую варианты
-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
(останавливали мое затмение 3.4 из метания "java.lang.OutOfMemoryError: PermGen space
" поэтому он должен также работать с NetBeans).
Редактировать: Сразу отметим, что для Netbeans установить эти параметры в: [Netbeans installation]\etc\netbeans.conf
Вы должны prefixe эти варианты с -J
и добавить их в netbeans_default_options
(см комментарии в netbeans.conf
для получения дополнительной информации).
см. Также http://stackoverflow.com/questions/717550/java-lang-outofmemoryerror-java-heap-space-with-netbeans – Steen
Почему бы вам не перейти на более новую версию NetBeans? 6.5 действительно старый. –
@a_horse_with_no_name: Как и этот вопрос. Я спросил его более трех лет назад. –