что, помимо объектов класса, хранится в Perm Gen Space (sun 1.6 VM)?

Я вижу 'java.lang.OutOfMemoryError: PermGen space' при выполнении ~ 300 тестов JUnit и использовании контекста Spring. Трудно понять, что поглощает PermGen, поскольку:

  • в стабильном состоянии приложение потребляет около 90 м пространства permgen
  • Я пробовал -XX: MaxPermSize = 256 м для модульных тестов - все еще заканчивается
  • С -XX: + TraceClassLoading и -XX: + TraceClassUnloading включены, я не вижу дополнительных событий «загрузки» при выполнении последних 20-30 тестов перед OutOfMemoryError .

Последнее, по-видимому, предполагает, что PermGen заполняется чем-то помимо объектов Class, не так ли? Если да, то что это могло быть? Например, бывают ли обстоятельства, когда экземпляры класса хранятся в PermGen?

Вот моя информация о виртуальной машине:

$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

связанный

FWIW, корень моей проблемы, которая привела к этому посту, оказалась несколько тривиально: я предположил, что плагин Maven Surefire наследует настройки ВМ от MAVEN_OPTS (или экземпляра ВМ, на котором запущен mvn), когда он разветвляет ВМ - это не (boo). Их нужно указать явно с помощью argLine в конфигурации плагина. HTH.

15
задан entpnerd 7 December 2016 в 21:12
поделиться