代码之家  ›  专栏  ›  技术社区  ›  Nick Bolton

哪些Java内存探查器应用程序将在Windows 7 64位和Java 1.4 32位上工作?

  •  0
  • Nick Bolton  · 技术社区  · 15 年前

    我试图在旧的Java1.4应用程序中找到内存泄漏。我曾经尝试过使用jmp,但不幸的是,我没有成功地让它工作(它在windows7中真的受支持吗?)。

    6 回复  |  直到 15 年前
        1
  •  1
  •   Steve Jackson    15 年前

    我使用JMP,直到我们转到java1.6。

    http://www.khelekore.org/jmp/

    如果您只是验证泄漏,GCViewer很好:

    http://www.tagtraum.com/gcviewer.html

        2
  •  0
  •   keshav84    15 年前
        3
  •  0
  •   Thomas Mueller    15 年前

    你已经试过了吗

    jps -l
    jmap -histo <pid>
    

    然后,我将安装Java 6,运行相同的应用程序,并使用:

    jconsole
    
        4
  •  0
  •   Daniel Voina    15 年前
        5
  •  0
  •   Nick Bolton    15 年前

    最后我做了以下几件事:

    1. 添加 -XX:HeapDumpPath=C:\Temp\HeapDump 启动应用程序时的参数
    2. 等待它崩溃并出现OutOfMemory异常
    3. 使用 Memory Analyzer (MAT) 看看是什么占用了这么多的内存。
        6
  •  -1
  •   Anon    15 年前

    您运行的是1.4 JVM,对吗?它不是运行在1.6 JVM上的1.4编译类?有没有什么原因让你不能在1.6JVM上运行应用程序,至少在开发环境中是这样的?

    如果没有,内置的HProf代理应该可以工作,至少可以找到内存泄漏。它会告诉你什么是物体 live

    我不是百分之百肯定,但我相信你需要使用 -Xrunhprof 调用选项(链接的文档使用 -agentlib ,我想可能是在1.5)中添加的。另外,我认为有一个1.4版本支持“现代”调试接口,因此可以与JConsole一起使用。