【问题标题】:Eclipse Memory Analyzer - Leak Suspects Report doesn't point to MY classes - why?Eclipse Memory Analyzer - Leak Suspects Report 未指向我的课程 - 为什么?
【发布时间】:2011-06-23 12:58:12
【问题描述】:

我正在尝试确定我的 web 应用程序中是否存在内存泄漏。我正在使用 VisualVM 和 JMeter 进行负载测试并观察堆。

我昨天将堆转储保存到文件并下载了 Eclipse 内存分析器...在对 VisualVM 感到非常沮丧之后,我认为 Eclipse 会比 VisualVM 更好地查明泄漏(如果有的话)。

我在 Eclipse 中打开了堆文件并运行了他们所谓的泄漏嫌疑人报告。我认为它会指向我的 web 应用程序中的特定类,但事实并非如此。所以我不知道如何使用它提供的信息来找出泄漏嫌疑人在我的任何特定类别中的位置。

这是我的一个堆转储文件的泄漏可疑报告的结果。

由“org.apache.catalina.loader.StandardClassLoader @ 0x261bdac0”加载的“org.apache.catalina.session.StandardManager”的一个实例占用了 16,977,376 (48.54%) 字节。内存在“”加载的“java.util.concurrent.ConcurrentHashMap$Segment[]”的一个实例中累积。 关键词 org.apache.catalina.loader.StandardClassLoader @ 0x261bdac0 org.apache.catalina.session.StandardManager java.util.concurrent.ConcurrentHashMap$Segment[]

报告中的其他详细信息如附图所示。我希望可以将图像放大以仔细查看....

我知道 Eclipse 应该是非常好的软件。这是我最后一次尝试使用类似的东西来查找内存泄漏 - 我只是非常非常非常有限地了解如何使用这个软件来解决这个问题。教程和帮助页面描述的事情好像你应该知道点击几下后该做什么......我需要更多的帮助。

【问题讨论】:

    标签: java eclipse memory-leaks eclipse-rcp heap-memory


    【解决方案1】:

    虽然我没有任何使用 Eclipse 查找泄漏的经验,但我首先要问一个问题:您有多确定自己有内存泄漏?从您的问题来看,听起来您并不确定是否有泄漏,但您正在测试是否有泄漏。最简单的测试方法是启动您的应用程序,注意它消耗了多少内存,让 JMeter 连续 24 小时访问它,然后查看它消耗了多少内存(可能在执行 GC 之后)。如果您的应用程序正在消耗大量内存,或者因OutOfMemoryError 而死,那么您就有内存泄漏。

    如果您发现确实存在内存泄漏,那么我建议您首先通过 FindBugs 运行您的应用程序,看看它是否可以通过快速静态分析找到内存泄漏。如果这不起作用,那么this article(虽然它比较旧)可能会帮助您了解 Eclipse 提供给您的结果。

    【讨论】:

      猜你喜欢
      • 2013-04-12
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2018-07-02
      • 2012-03-29
      相关资源
      最近更新 更多