代码之家  ›  专栏  ›  技术社区  ›  Reji

Eclipse RCP应用程序中的内存泄漏

  •  3
  • Reji  · 技术社区  · 15 年前

    如何检测Eclipse RCP应用程序中的内存泄漏?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Glorfindel Craig Stuntz    5 年前

    您可能想试试随附的内存泄漏检测器 JRockit Mission Control Eclipse MAT . 这是一个强大的组合。这两种工具都可以免费用于开发。

    使用JRockit Mission Control,您可以在线检查堆并查看特定类型的活动对象的确切数量,而无需拍摄耗时的快照。关闭视图/编辑器后,您可以直接查看堆上是否还有编辑器、视图或侦听器对象。它通常是一个框架侦听器,用于保存视图/编辑器。请记住,您必须转到Windows->偏好->内存泄漏检测器->趋势与设定 设置为0.0以关闭所有对象实例。

    alt text
    (来源: oracle.com

    使用MAT,您可以使用到线程根的最短路径来查找保持泄漏对象的链。见下文

    alt text http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/04/path2gc_all.png

    修改代码,并在关闭编辑器/视图时使用内存泄漏检测器验证对象是否已被垃圾收集。

        2
  •  3
  •   Andrew Niefer    15 年前

    你需要某种分析工具。

    有一个 Memory Analyzer eclipse上的项目( wiki , blog ).

    而且,它看起来像 TPTP

        3
  •  1
  •   Meinersbur    15 年前

    自JDK 6更新7以来,它位于bin目录(Windows下的jvisualvm.exe)中。

    还包括内存分析器、堆遍历器和 Eclipse integration

    https://visualvm.dev.java.net/images/getstarted/vvm-anagram-profiler.png (太糟糕了,我不允许使用图像标签)

    看见 https://visualvm.dev.java.net/

        4
  •  0
  •   Bryji    15 年前

    如果您在windows上,最简单的方法就是在使用该工具时在Task Manager中监视例如eclipse.exe进程。如果您的RCP可执行文件有不同的名称,那么这就是您需要监视的内容。在Unix上,您可以使用类似的工具(proc-maybe?)。

    通过eclipse.ini(或.ini)中的“-Xmx”设置减少应用程序可用的内存量,可以加速内存不足错误。例如,-Xmx256m表示最大可用256兆字节。显然,此设置仍然需要足以运行您的应用程序,但较低的设置将强制更频繁的垃圾收集,并使泄漏更加明显。

        5
  •  0
  •   GreenKiwi    15 年前

    你需要一个内存分析器(正如其他人所提到的)。一旦你有了一个好的工具,你可以很容易地找到问题。

    我们使用: http://www.yourkit.com/

    对于我们的测试,它工作得非常好,有浮动许可证,因此开发人员可以在他们的机器上本地使用它。