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