严重:Java堆空间java.lang.OutOfMemoryError:Java堆空间

时间:2014-08-06 10:50:29

标签: mysql hibernate jpa

从数据库中获取记录时,我得到的误差低于误差,你能不能请任何人帮助我。

获取代码

session = MySessionFactory.getSession();
            System.out.println(text);
            Query query = session.createQuery("from Visitor where v_firstname =:firstName");
            query.setParameter("firstName", text);
            System.out.println("ch1---");
            return query.list();

Here i got ch1---. It means while fetching records that error is coming.

我将java堆空间也增加到了1024mb, 我正在使用primefaces 4.0 以下是我的日志文件。

提前致谢。

Aug 6, 2014 4:17:14 PM org.primefaces.extensions.component.ajaxerrorhandler.AjaxExceptionHandler handlePartialResponseError
SEVERE: Java heap space
java.lang.OutOfMemoryError: Java heap space
    at com.mysql.jdbc.Buffer.getBytes(Buffer.java:207)
    at com.mysql.jdbc.Buffer.readLenByteArray(Buffer.java:339)
    at com.mysql.jdbc.BufferRow.getColumnValue(BufferRow.java:330)
    at com.mysql.jdbc.ResultSetImpl.getBytes(ResultSetImpl.java:1935)
    at com.mysql.jdbc.ResultSetImpl.getBytes(ResultSetImpl.java:1913)
    at com.mysql.jdbc.ResultSetImpl.getBytes(ResultSetImpl.java:1953)
    at org.hibernate.type.AbstractBynaryType.get(AbstractBynaryType.java:101)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
    at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)
    at org.hibernate.loader.Loader.getRow(Loader.java:1230)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
    at org.hibernate.loader.Loader.doQuery(Loader.java:724)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.loadCollection(Loader.java:2019)
    at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:59)
    at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:587)
    at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
    at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1744)
    at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:476)
    at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:867)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:264)
    at org.hibernate.loader.Loader.doList(Loader.java:2232)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
    at org.hibernate.loader.Loader.list(Loader.java:2124)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)

1 个答案:

答案 0 :(得分:-1)

我的项目中没有错误的代码。

问题是,有那么多废弃(未使用)的对象和列表对象,并且所有列表对象都有这么多记录。我只是清理我的代码,然后重新启动我的系统(服务器)。现在工作正常。

我的建议是不要随时获取总记录,每次都使用延迟加载。如果next不需要任何对象,则为该对象分配null,然后只有垃圾收集器可以工作。