在大型Java堆转储中查找内存泄漏的方法

19 浏览
0 Comments

在大型Java堆转储中查找内存泄漏的方法

我需要找到一个Java应用程序中的内存泄漏问题。我对此有一些经验,但希望能得到一些关于方法论和策略的建议。欢迎任何参考和建议。

关于我们的情况:

  1. 堆转储文件超过1GB。
  2. 我们有5个不同场合的堆转储文件。
  3. 我们没有任何测试用例来引发这个问题。这只会在(庞大的)系统测试环境中,在至少一周的使用后才会发生。
  4. 该系统是建立在一个内部开发的遗留框架上,这个框架有太多的设计缺陷,无法一一列举。
  5. 没有人对这个框架有深入的了解。它已经交给了一个在印度的家伙,他几乎跟得上回复电子邮件的速度。
  6. 我们已经随着时间进行了快照堆转储,并得出结论:没有一个组件会随着时间的推移而增加。一切都是缓慢增长。
  7. 上述事实指向了这样一个方向:是框架自制的ORM系统在不断增加使用量。 (该系统将对象映射到文件中?所以并不是真正的ORM)

问题:在企业级应用程序中,您是如何成功追踪和解决内存泄漏问题的方法论?

0