我不幸得到了一项寻找未经证实的内存泄漏的任务。这是我第一次使用 YourKit,所以虽然我知道我应该寻找什么,但我不知道在哪里寻找以及如何寻找。
我的理解是,随着时间的推移,内存消耗会增加,因为某些对象没有被释放。在 Rails 中很难做到这一点,但我想有人知道怎么做。
以下是内存遥测的样子:
忽略 GC 之间的事实周期随着时间的推移而增加,看起来 Old Gen 内存正在上升......也许。
现在我们可能需要知道那里堆积了哪些物体以及产生它们的原因。
到目前为止我采取的步骤:
- 触发CG
- 开始“对象分配记录”(每 100 个......我觉得它可能对某些东西有用)
- 等了一会儿
- 触发了另一个CG
- 做了内存转储
在 YourKit 中打开内存快照后,我不知道我应该寻找什么。
分配中有调用树。展开树给了我一些正在运行的 Rails 代码的提示,但我不知道我所看到的是否真的是我需要的。
任何 Java 分析,Yourkit 挥舞,能指出我正确方向的人吗?
编辑:我可以在合并路径视图中看到的示例: