【问题标题】:How can I determine what's causing high memory usage in my Java application?如何确定导致 Java 应用程序内存使用率高的原因?
【发布时间】:2014-04-30 06:27:59
【问题描述】:

通过分析堆使用情况和创建的对象数量,我相信这是导致我的程序使用大量内存并导致其运行速度比预期慢的原因。

我如何确定导致这种高内存使用的原因并确定代码的哪位实际导致它。

我使用 Plumbr 来尝试识别任何内存泄漏,他们说没有。

这是堆使用情况和使用的对象的图像。

【问题讨论】:

  • 使用VisualVM 并进行堆转储。 Analyse the object graph 并弄清楚发生了什么。
  • 我有一个对象列表,但它没有显示来源,例如导致问题的原因或它们的创建位置

标签: java object memory-leaks heap-memory


【解决方案1】:

如果您的代码经常分配新对象,则垃圾收集可能会经常运行,从而降低您的程序速度。我在办公室使用 JProfiler 来追踪这类问题。它告诉您分配了某个类的多少个对象,并使查找分配热点变得容易。这是一个商业软件,但我相信他们有踪迹。

【讨论】:

  • 我曾尝试使用 VisualVM 来追踪问题,但我实际上无法找到问题所在。它说某些对象的使用率很高,但没有告诉我问题是在哪里引起的。
猜你喜欢
  • 2014-10-31
  • 2013-10-27
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2011-07-19
相关资源
最近更新 更多