Spring 3.1 + Hibernate + Problemas com PermGen Space! O que está diferente?

Boa tarde pessoal!

Eu atualizei há uns 15 dias o Spring para a versão 3.1 e um dos projetos, que anteriormente implementava sobre JPA, foi alterado para Hibernate. Daí para frente este projeto está dando direto problema de “java.lang.OutOfMemoryError: PermGen space” no TomCat 7.

Alguém saberia me informar o que houve nessas versões ou o problema está no uso Hibernate?

Desde já, agradeço a ajuda.

Só foi essa a alteração? Teve mais nenhuma não?

Não não!! A máquina é a mesma. Tudo está igual. Quer dizer… os JARs de dependencia para o Spring 3.1 foram tb atualizados… no mais não tenho nenhuma outra alteração (que eu lembre agora).

Segue o erro:

Jun 10, 2012 4:11:20 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/ag-deliveryplus-site] has started
Jun 10, 2012 4:11:20 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
16:11:20,331  INFO [XmlWebApplicationContext] Closing Root WebApplicationContext: startup date [Sun Jun 10 15:50:17 BRT 2012]; root of context hierarchy
16:11:20,332  INFO [DefaultListableBeanFactory] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1988802: defining beans [datasource,sessionFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,productDAO,productCategoryDAO,supplierDAO,customerDAO,outlayEventDAO,basketOfPurchaseDAO,orderDAO,productApplication,productCategoryApplication,supplierApplication,customerApplication,basketApplication,outlayEventApplication,orderApplication,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy
16:11:20,336  INFO [LocalSessionFactoryBean] Closing Hibernate SessionFactory
Jun 10, 2012 4:11:20 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/ag-deliveryplus-site] registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" Exception in thread ""http-bio-9090"-exec-5" Exception in thread ""http-bio-9090"-exec-3" java.lang.OutOfMemoryError: PermGen space

E junto com a alteração do JAR, foi nenhum código novo não?

Código tem muito, pois o projeto está em evolução. Porém, mesmo com uma única classe (servlet) dá este erro!
A única coisa que tem de código diferente da implementação anterior está sendo como o contexto do spring é acessado. Desta vez utilizamos:

private SupplierApplication supplierApplication = ContextLoaderListener
			.getCurrentWebApplicationContext().getBean(SupplierApplication.class);

Fora isto nada de novo! Isto tenho certeza!

Apenas para constar:

  • resolvemos o problema migrando de Hibernate para JPA.

Não me pergunte o por quê de ter dado certo, mas acabou literalmente com o problema do PermGen, mas qual a causa real de ter ocorrido isto não sabemos.

Ari