远程识别客户使用的应用程序中的内存泄漏

Goh*_*ohu 6 java memory-leaks

客户抱怨他在Java应用程序中遇到内存泄漏.

尽管我努力重现他的环境,配置和使用,但我无法重现并因此识别泄漏.

我想沿着另一条路走下去......也许我可以让他生成一些可以让我识别出泄漏的堆的视图,而不是试图复制它.

由发送给我的客户运营,对此有一些要求:

  1. 不应包含机密信息
  2. 应该足够小,以便可以通过互联网发送
  3. 应该由一个易于使用的工具生成(如果它在Java发行版中最好)

由于1.和2,完全堆转储是不可能的.

最重要的是,它应该让我找到泄漏.所以它至少应该显示每个类的对象的保留堆大小(自身的大小+它保留引用的所有内容). jmap -histo绝对不够好.

 num     #instances         #bytes  class name
----------------------------------------------
   1:         14156      577318512  [B
   2:          9196       47439696  [I
   3:         83396        9809992  [C
Run Code Online (Sandbox Code Playgroud)

这样的东西有用吗?我不这么认为.

Hen*_*ann 0

是否允许客户自己进行内存转储而不将其发送给您?

如果可能的话,Eclipse 内存分析器有一个非常易于使用的向导,它将生成泄漏可疑报告。报告本身很小。