首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSphere 6.1中的长事务导致OutOfMemoryException

WebSphere 6.1中的长事务导致OutOfMemoryException
EN

Stack Overflow用户
提问于 2011-04-11 11:49:45
回答 1查看 587关注 0票数 0

我正在运行一个同步/批处理作业(synchronizeXXX() ),它在一个长时间运行的事务(>4小时)中使用Hibernate 3.2.5GA /Spring2.5.6在Oracle数据库中插入111821条记录,但在大约4小时后就失败了。2小时/ 50000记录,但有OutOfMemory异常。

虽然我每20次插入一次清除和刷新,但它看起来还是像Hibernate/Websphere/Spring (?)在这个会议上抓住了无数个物体。

有趣的是:内存的使用一开始是正常的,但大约是在之后。20/30分钟,内存使用量开始增加并增长,直到出现OutOfMemory (因为它已被滚动/清除或其他什么原因而没有显示在PDF中)。我尝试将Hibernate从3.2.5升级到3.3.2GA,但问题仍然存在。当我增加最大堆大小时,OutOfMemory只是晚些时候出现。

我搜索并发现了一些类似的问题,但是他们使用Hibernate来管理事务,而不是Spring,所以我想上面提到的修复与我(?)无关。请参阅模拟问题

我分析了堆转储,并使用4.1进行了一些分析。所有结果/屏幕截图和更多细节都包含在PDF中:参见OutOfMemory分析(PDF-586KB)

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-12 09:45:03

即使您不时地进行清除和刷新,Hibernate会话和事务仍然是开放的,并且看起来并不像在您的情况下那样工作。

这里的选择似乎是:

( a)使用无状态会话:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html

( b)使用SQL查询,使hibernate不能保存任何内容。

( c)使用几个事务

这里没有很好的解决方案,所以只需为您提供最好的选择:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5620805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档