Работа с & ldquo; java.lang.OutOfMemoryError: PermGen space & rdquo; ошибка

Вы можете использовать DESCRIBE my_table и использовать результаты этого для генерации инструкции SELECT динамически.

1209
задан 8 revs, 6 users 55% 22 March 2018 в 06:44
поделиться

10 ответов

Решение состояло в том, чтобы добавить эти флаги к командной строке JVM, когда Tomcat запускается:

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

можно сделать это путем закрытия сервиса кота, затем входа в Tomcat/каталог bin и выполнения tomcat6w.exe. Под вкладкой "Java" добавьте аргументы полю "Java Options". Нажмите "OK" и затем перезапустите сервис.

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

tomcat6w //ES//servicename

, где servicename является названием сервера, как просматривается в источнике services.msc

: комментарий orx Гибкие Ответы Eric .

560
ответ дан 3 revs, 3 users 63% 22 March 2018 в 06:44
поделиться

разрешил это для меня также; однако, я заметил, что времена перезапуска сервлета были намного хуже, поэтому в то время как это лучше работало, это было, своего рода притягивают разработку.

4
ответ дан fragilewindows 22 March 2018 в 06:44
поделиться

Сервер приложений ошибки PermGen, которые происходят после нескольких развертывания, скорее всего, вызывается ссылками, сохраненными контейнером в classloaders Ваших старых приложений. Например, использование пользовательского класса уровня журнала заставит ссылки быть сохраненными classloader сервера приложений. Можно обнаружить эти утечки inter-classloader при помощи современного (JDK6 +) аналитические инструменты JVM, такие как jmap и jhat для рассмотрения, какие классы продолжают быть сохраненными в приложении, и перепроектировании или устранении их использования. Обычные подозреваемые являются базами данных, регистраторами и другими библиотеками основного уровня платформы.

См. утечки Classloader: страшное "java.lang. OutOfMemoryError: PermGen располагают с интервалами" исключение , и особенно ответное письмо .

152
ответ дан 5 revs, 4 users 43%anon 22 March 2018 в 06:44
поделиться

Используйте параметр командной строки -XX:MaxPermSize=128m для JVM Sun (очевидно, заменяющий 128 для любого размера, в котором Вы нуждаетесь).

40
ответ дан bluish 22 March 2018 в 06:44
поделиться

С другой стороны, можно переключиться на JRockit который, обработав permgen jvm по-другому тогда солнца. Это обычно имеет лучшую производительность также.

http://www.oracle.com/technetwork/middleware/jrockit/overview/index.html

15
ответ дан Jeremy 22 March 2018 в 06:44
поделиться

Попробуйте -XX:MaxPermSize=256m и если это сохраняется, попробуйте -XX:MaxPermSize=512m

37
ответ дан 3 revs, 3 users 50%bassist 22 March 2018 в 16:44
поделиться

Конфигурация памяти зависит от природы Вашего приложения.

, Что Вы делаете?

, Что прецессируется сумма транзакций?

, Сколько данных Вы загружаетесь?

и т.д.

и т.д.

и т.д.

, Вероятно, Вы могли представить свое приложение и начать очищать некоторые модули из своего приложения.

, По-видимому, это может произойти после повторного развертывания приложения несколько раз

, Tomcat имеет горячий, развертываются, но это использует память. Попытайтесь перезапустить свой контейнер время от времени. Также необходимо будет знать, что объем памяти должен был работать в производственном режиме, это кажется хорошим временем для того исследования.

3
ответ дан OscarRyz 22 March 2018 в 16:44
поделиться
  • 1
    OP явно указал, что ему нужны обе дублирующихся строки на наборе результатов. – Pablo Santa Cruz 9 December 2010 в 17:48

Вам лучше попробовать -XX: MaxPermSize = 128M , а не -XX: MaxPermGen = 128M .

Я не могу сказать точно, как используется этот пул памяти, но это связано с количеством классов, загруженных в JVM. (Таким образом, включение выгрузки классов для tomcat может решить проблему.) Если ваши приложения генерируют и компилируют классы на ходу, скорее всего, потребуется пул памяти большего размера, чем по умолчанию.

250
ответ дан 19 December 2019 в 20:15
поделиться

У меня есть комбинация Hibernate + Eclipse RCP, я пробовал использовать -XX: MaxPermSize = 512m и -XX: PermSize = 512m и кажется работать на меня.

4
ответ дан 19 December 2019 в 20:16
поделиться

Установите -XX: PermSize = 64m -XX: MaxPermSize = 128m . Позже вы также можете попробовать увеличить MaxPermSize . Надеюсь, это сработает. У меня то же самое. Только установка MaxPermSize у меня не сработала.

4
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: