我有一个使用JPA在Glassfish上运行的简单EAR应用程序。它从我的Oracle数据库表中读取记录并处理它们。一旦被处理,它们在数据库中被标记为如此,然后我在实体管理器上调用clear(),以便处理的对象可以被分离和GC化。但是,尽管自从我们添加了clear()堆用法后,整体堆仍然在增加,并最终达到最大堆。没有其他可能导致泄漏的物体,我不知道我能做些什么。我们也关闭了JPA缓存。Java持久性(JPA)堆问题
<property name="eclipselink.cache.shared.default" value="false"/>
有没有人知道我能做些什么来确保没有JPA对象被保留?这可能与交易有关吗?每次我们更新要处理的最后一批记录时,我们都会使用新的交易。
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
任何建议表示赞赏。我知道我可以配置应用程序,但很难看到问题,即使我希望它是某些未被收集的JPA对象,但我不确定我在清理实体方面缺少了什么他们不再需要。
James
好的,适合自己。 – skaffman 2011-01-21 10:54:36