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