Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Hibernate WebSphere6.1中的长事务导致OutOfMemoryException_Hibernate_Spring_Transactions_Websphere_Out Of Memory - Fatal编程技术网

Hibernate WebSphere6.1中的长事务导致OutOfMemoryException

Hibernate WebSphere6.1中的长事务导致OutOfMemoryException,hibernate,spring,transactions,websphere,out-of-memory,Hibernate,Spring,Transactions,Websphere,Out Of Memory,我正在运行一个同步/批处理作业synchronizeXXX,它使用Hibernate 3.2.5GA/Spring 2.5.6在一个长时间运行的事务中插入111821条记录>4小时,但在大约2小时/50000条记录后失败,出现OutOfMemory异常。 尽管我每隔20次清除并刷新一次插入,但看起来Hibernate/Websphere/Spring仍在会话中保留了大量对象 有趣的是:内存使用最初是正常的,但在大约20/30分钟后,内存使用开始增加,直到OutOfMemory出现,但没有显示在P

我正在运行一个同步/批处理作业synchronizeXXX,它使用Hibernate 3.2.5GA/Spring 2.5.6在一个长时间运行的事务中插入111821条记录>4小时,但在大约2小时/50000条记录后失败,出现OutOfMemory异常。 尽管我每隔20次清除并刷新一次插入,但看起来Hibernate/Websphere/Spring仍在会话中保留了大量对象

有趣的是:内存使用最初是正常的,但在大约20/30分钟后,内存使用开始增加,直到OutOfMemory出现,但没有显示在PDF中,因为它已被滚出/清除或其他内容。我尝试从3.2.5升级Hibernate 至3.3.2GA,但仍然存在相同的问题。 当我增加最大堆大小时,OutOfMemory只是在后面出现

我在谷歌上搜索了一下,发现了一些“类似”的问题,但他们用Hibernate而不是Spring来管理事务,所以我想上面提到的修复与我无关。看

我分析了堆转储,并使用IBMSupportAgent4.1进行了一些分析。所有结果/屏幕截图和更多详细信息均包含在PDF中:请参阅


感谢您的帮助

即使您不时执行清除和刷新操作,Hibernate会话和事务仍处于打开状态,并且清除操作在您的情况下似乎无法正常工作

这里的选项似乎是:

使用无状态会话:

b使用SQL查询,使hibernate无法保存任何内容

c使用多个事务


这里没有很好的解决方案,所以请为您选择最佳选项:

谢谢。c不是我们的选择。如果我在Oracle中生成了密钥序列,是否可以使用?如果是这样,我想我必须自己插入所有成员/集合。顺便说一句:我们正在考虑迁移到PL/SQL,因为现在的性能是惊人的:因为一个大型XML文件的数据已经在Clob中的数据库中,这应该会加快速度。从未使用过无状态会话,但我理解,您必须逐个插入每个元素,从子元素到父元素,这样一切都会按应有的方式结束。将所有内容移动到PL/SQL可能是一个解决方案,但使用b可能允许您使用Java的XML解析功能,同时应该大大减少处理时间并避免缓存问题,只需通过Hibernate.btw发送SQL即可。我使用了另一个transactionmanager一些标准的HibernateTX管理器;我必须在spring配置中查找,viola的内存使用稳定了两个小时!!在这之后,它超时了,但我想这是另一个问题-