【问题标题】:Java: Finding out what is using all the memoryJava:找出正在使用所有内存的内容
【发布时间】:2009-11-09 18:26:47
【问题描述】:

我有一个内存不足的 java 应用程序,但我不知道是哪个代码分配了内存。有没有我可以检查的应用程序?我使用 Eclipse。

【问题讨论】:

    标签: java eclipse memory profiling


    【解决方案1】:

    由于您使用 eclipse,我建议您使用 Eclipse Memory Analyzer 插件。这个工具效果很好,甚至会提供一些可能的泄漏嫌疑人的报告。我已经查看了超过 1G 的堆转储,没有任何问题。我只是使用 JDK 附带的 jconsole 来获取转储。

    这里还有一个很棒的blog,由该工具的一位作者撰写。

    这也是免费的。

    【讨论】:

    • +1: 不错的工具...你知道jvm版本或jvm种类有什么限制吗?
    • 我不确定我在 1.5 和 1.6 中使用过的 jvm 限制。但是我很难使用该工具所依赖的旧版 java 进行堆转储。
    【解决方案2】:

    VisualVM 是一个可视化工具,集成了多个命令行 JDK 工具和轻量级分析功能。它专为生产和开发时间使用而设计,进一步增强了 Java SE 平台的监控和性能分析能力。

    它包含在JDK中。

    【讨论】:

      【解决方案3】:

      我在 JProfiler 上取得了巨大的成功

      http://www.ej-technologies.com/products/jprofiler/overview.html

      【讨论】:

        【解决方案4】:

        你想要一个 Profiler。

        Here is a comprehensive list.

        【讨论】:

          【解决方案5】:

          您需要使用内存分析器。您可以使用 Sun 的 JVM Tool Interface 或第三方分析器,如 JProfiler。 Eclipse 也有分析工具,称为Test & Performance Tools Platform (TPTP)。

          【讨论】:

          • 免费的工具很多,但是JProfiler很好用。
          【解决方案6】:

          我相信每个人都有自己喜欢的,但我推荐Netbeans

          【讨论】:

            【解决方案7】:

            Yourkit 是一个很棒的工具,我曾多次使用它来查找和记录性能问题。带有 TPTP 框架的 Eclipse 也可用于执行此操作。它也适用于远程应用程序服务器(您需要启用分析代理并在 JVM 中打开远程调试),但它允许您对几乎任何 J2EE 环境运行分析。

            【讨论】:

              【解决方案8】:

              对于快速分析或者如果您不使用 Eclipse 或较旧版本的 jvm,hprof 是一个不错的选择。 (我只是将其添加为参考。)。

              【讨论】:

              • hprof 的一个重要优点是它具有最小的依赖关系:JDK 的一部分,并且没有 GUI。所以在紧要关头,您可以轻松地直接在生产服务器上安装和运行它,即使它没有 GUI。用 Eclipse 试试 ;-)。
              【解决方案9】:

              前几天我必须找到导致 2.6G 堆转储的内存泄漏源。 Jhat 需要令人难以置信的 20G 堆大小才能在不崩溃的情况下通过它。 Eclipse 内存分析器在 10G 以下完成。也就是说,我发现这两个工具都很有用,但我会首先推荐内存分析器,以便更有效地使用内存并更易于使用。

              我对所使用的内存量感到非常惊讶,但我可以向你保证,如果我使用的内存少,我会遇到 OutOfMemory 错误。

              【讨论】:

                【解决方案10】:

                我使用HP Diagnostics Profiler 免费评估(5 个线程无限制)发现了内存泄漏。它允许以直观、简单的方式跟踪内存分配并进行堆分析。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-06-08
                  • 2021-01-04
                  • 2012-08-10
                  • 2021-09-27
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-03-20
                  相关资源
                  最近更新 更多