Я занимаюсь разработкой на стандартной платформе Lift (Maven и Jetty). Я неоднократно (раз в пару дней) получаю это:
Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN: handle failed
java.lang.OutOfMemoryError: PermGen space
Это в моей среде разработки. Это не проблема, потому что я могу продолжать перезагружать сервер. В развертывании у меня нет этих проблем, так что это не настоящая проблема. Мне просто любопытно.
Я не слишком много знаю о JVM. Я думаю, что я прав, думая, что память постоянного поколения предназначена для таких вещей, как классы и интернированные строки? То, что я помню, немного перепутано с моделью памяти .NET ...
Есть причина, почему это происходит? Значения по умолчанию просто безумно низкие? Связано ли это со всеми вспомогательными объектами, которые Scala должен создавать для объектов Function и подобных вещей FP? Каждый раз, когда я перезагружаю Jetty с новым написанным кодом (каждые несколько минут), я представляю, что он перезагружает классы и т. Д. Но даже в этом случае, не может ли быть так много, не так ли? И не должна ли JVM иметь дело с большим количеством классов?
Приветствия
Джо