Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MySQL db获取时引发TransactionSystemException | java.lang.OutOfMemoryError:java堆空间_Java_Spring_Hibernate_Spring Boot - Fatal编程技术网

从MySQL db获取时引发TransactionSystemException | java.lang.OutOfMemoryError:java堆空间

从MySQL db获取时引发TransactionSystemException | java.lang.OutOfMemoryError:java堆空间,java,spring,hibernate,spring-boot,Java,Spring,Hibernate,Spring Boot,我得到以下异常 [2017-05-22 22:02:43.930] boot - 8169 ERROR [http-nio-8080-exec-1] --- TransactionInterceptor: Application exception overridden by rollback exception java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.Buffer.<init>(B

我得到以下异常

[2017-05-22 22:02:43.930] boot - 8169 ERROR [http-nio-8080-exec-1] ---  TransactionInterceptor: Application exception overridden by rollback exception
   java.lang.OutOfMemoryError: Java heap space
     at com.mysql.jdbc.Buffer.<init>(Buffer.java:54)
     at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1972)
     at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3285)
     at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:463)
     at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3009)
     at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2257)
     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2650)
     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)
     at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901)
     at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2002)
     at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)
     at org.hibernate.loader.Loader.getResultSet(Loader.java:2066)
     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1863)
     at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839)
     at org.hibernate.loader.Loader.doQuery(Loader.java:910)
     at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
     at org.hibernate.loader.Loader.doList(Loader.java:2554)
     at org.hibernate.loader.Loader.doList(Loader.java:2540)
     at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
     at org.hibernate.loader.Loader.list(Loader.java:2365)
     at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126)
     at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1718)
     at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380)
     at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:402)
增加内存似乎没有帮助,它只是挂起

有没有办法解决这个问题?加载其他人实体不会导致该问题

一些可能有用的信息:

 <springframework.version>4.2.1.RELEASE</springframework.version>
 <hibernate.version>4.3.11.Final</hibernate.version>
 <mysql.connector.version>5.1.36</mysql.connector.version>
4.2.1.1版本
4.3.11.4最终版本
5.1.36

请帮忙。

简而言之,我通过延迟加载解决了这个问题

MyPerson实体引用了几个集合,这些集合确实是被急切地获取的。我所有收藏中的以下注释为我解决了这个问题:

@ElementCollection(fetch = FetchType.LAZY)

现在似乎很明显;我很惊讶,因为我已经运行我的应用程序很长一段时间了,定期加载个人实体,以前从未遇到过这个问题。

简而言之,我通过延迟加载解决了这个问题

MyPerson实体引用了几个集合,这些集合确实是被急切地获取的。我所有收藏中的以下注释为我解决了这个问题:

@ElementCollection(fetch = FetchType.LAZY)

现在似乎很明显;我很惊讶,因为我已经运行我的应用程序很长一段时间了,定期加载个人实体,以前从未遇到过这个问题。

你能发布实体吗?是否有可能存在一个循环,例如,对另一个人的急切引用,而另一个人又反过来引用了这个人?@StanislavL确实有其他实体被急切地获取。抓取它们懒散地解决了问题。你能发布实体吗?是否有可能存在一个循环,例如,对另一个人的急切引用,而另一个人又反过来引用了这个人?@StanislavL确实有其他实体被急切地获取。懒散地抓到他们解决了这个问题。