【问题标题】:SEVERE: Java heap space java.lang.OutOfMemoryError: Java heap space严重:Java 堆空间 java.lang.OutOfMemoryError:Java 堆空间
【发布时间】:2014-08-06 10:50:29
【问题描述】:

从数据库中获取记录时出现错误,请任何人帮助我。

获取代码是

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)

【问题讨论】:

  • 你能给我们看看代码吗?你在做什么?你在做什么数据处理。您是否调试应用程序以找出其失败的位置。然后发布该代码 sn-p。
  • 我通过添加 java 代码编辑了我的问题。请立即查看。
  • Visitor 有多少条记录?
  • 其实Visitor表有2k条记录。
  • 能否将日志级别设置为 info 并重试,然后将日志发布到错误

标签: mysql hibernate jpa


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2015-05-14
    相关资源
    最近更新 更多