【发布时间】:2014-09-03 08:50:29
【问题描述】:
我们使用 OpenJPA 2.3.0(在 2.2.0 之前有同样的问题)在 WAS 环境 (8.5) 中使用 Spring 在某种程度上连接到 DB2 数据库。 我们遇到的问题是应用程序不断消耗越来越多的内存,直到最终崩溃。
当使用(许多)推荐的内存分析器工具时,我们得到了一个罪魁祸首 JDBCBrokerFactory。 它有一个 ConcurrentHashMap(有 16 个条目),给定的使用数字负责丢失的内存。 (最大内存1024M,经过10个小时的连续但不太粗暴的负载,这个类负责400M,是MAT唯一指出的)
工厂类由环境持有(org.springframework.orm.jpa.SharedEntityManagerCreator 和 com.volvo.jvs.runtime.springutils.SpringContextBootstrapper)对我来说并不奇怪,但我希望该类不会增长或至少在需要时收缩得更好。 (在 JPA 2.2.0 中有更多的类保留了这个类,仍然没有“我们的”类)
当然,这个类不是我们与之交互的类之一(OpenJPA 实现的内部),这使得我们更难看出我们在使用 JPA 时是否犯了错误。
非常感谢任何关于我们可以改进以限制 JDBCBrokerFactory 破坏的想法或提示。
/马丁
【问题讨论】:
标签: java jpa memory-leaks openjpa