【发布时间】:2021-08-10 02:45:10
【问题描述】:
我有一个应用程序在 Heroku 上托管在一个具有 1GB RAM 的单个测功机上。我观察到关于记忆的奇怪行为。当我的应用程序正在使用时,我注意到测功机上消耗的总内存继续随着负载/使用而增加(这会尖叫内存泄漏,但稍后会看到......)但在垃圾收集运行时永远不会回落。我可以在我的 JVM 图表中看到 JVM 定期回收堆空间,但我从未看到总内存使用量相应减少;它似乎只会增加。
见下图:
我使用 Eclipse MAT 分析了一个堆转储,但没有发现任何说明。此外,我还向 JVM 添加了参数,如 here 所述,以将 JVM 的目标内存消耗绑定到容器而不是服务器本身。
如果有人能指出正确的方向,为什么 Heroku 报告的测功内存与我在 JVM 的堆和非堆空间图上看到的不一致,将不胜感激。
【问题讨论】: