2016-03-17 107 views
-1

在我的应用我有一个堆内存例外:我增加与JVM参数堆内存,但它并没有解决问题: 这里是例外:Java堆内存休眠

`java.lang.OutOfMemoryError: Java heap space 
at org.hibernate.type.ByteArrayBlobType.deepCopy(ByteArrayBlobType.java:76) 
at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:374) 
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:184) 
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854) 
at org.hibernate.loader.Loader.doQuery(Loader.java:729) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) 
at org.hibernate.loader.Loader.loadCollection(Loader.java:1994) 
at org.hibernate.loader.collection.BatchingCollectionInitializer.initialize(BatchingCollectionInitializer.java:52) 
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565) 
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:63) 
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) 
at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454) 
at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:844) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:241) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1860) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42) 
at org.hibernate.loader.entity.BatchingEntityLoader.load(BatchingEntityLoader.java:82) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) 
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815) 
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808) 
at org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:519) 
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406) 
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) 
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:512) 
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:506) 
` 

请帮助谢谢提前

+0

也许某些恶意实体映射(导致循环引用) – Antoniossss

+0

您可以粘贴Session初始化和查询执行的代码吗? –

+0

请检查与您同样问题的其他问题。也许是相同的原因:http://stackoverflow.com/questions/30234995/hibernate-java-lang-outofmemoryerror-java-heap-space –

回答

0

检查您是否通过某种单例机制获取SessionFactory的实例。当我开始学习hibernate时,我遇到了这个问题。您可以使用jconsole来检查jvm的性能。在命令提示符下键入jconsole并检查性能变化并优化代码