Eclipselink 缓存对象填充内存
温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
我最近从 Eclipselink 2.6 升级到 4.0.2。我需要更新应用程序以使用雅加达库。在运行大约 24 次后,我的应用程序开始变得非常滞后,并最终收到“java.lang.OutOfMemoryError:超出” GC 开销限制”。
我设置了GC日志,发现内存逐渐减少,直到GC停止释放内存并触发错误。
将内存转储到文件并使用Visual VM后,我看到数百万个“org.eclipse.persistence.internal.indirection”。工作单元 查询值 持有者" 对象和存储项。
我不确定这是否与 Eclipselink 库相关的某种内存泄漏,或者是我的应用程序做错了。我总是在每个事务中释放 EntityManager 对象。我已经运行我的应用程序好几年了,如果有内存泄漏,这是我第一次注意到,这就是为什么我认为一定与软件升级有关。
提前致谢。
我需要重新启动服务器。我再次转储内存。
经过更多研究,我在 Eclipselink 文档中找到了以下信息:在内部,EclipseLink 将持久性单元存储存储在 EclipseLink 会话上,将持久性单元存储存储在 EclipseLink 工作单元上。现在这意味着内存中的那些对象是L1缓存,没有被GC释放?
正文到此结束
- 本文标签: 家庭宠物
- 本文链接: https://www.coder6.net/article/2384
- 版权声明: 本文由蚂蚁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权