java - 分析内存时使用哪个 GC?

标签 java memory-leaks garbage-collection profiling visualvm

我使用 NetBeans 分析器(它实际上是一个嵌入式 VisualVM)来监视我的 Java 应用程序的内存消耗。我使用heap View 、surviving generation View 和内存转储 来跟踪内存泄漏。

堆 View 显示了已用内存的总量,但由于垃圾收集器管理内存的方式,它有点困惑。该图基本上是锯齿形的,因此可读性不是特别好。有时,我强制 GC 发生,以便我可以更准确地了解实际内存消耗。

我想知道:是否有更适合内存分析的垃圾收集器,并且会产生更接近实际内存使用情况的堆图?或者更一般地说,我可以使用哪些 JVM 设置(-XX 选项或其他)来有效跟踪内存泄漏?

example heap graph

最佳答案

您在图表中看到的应用程序内存利用率的真实行为。重复的锯齿模式可能是由于正在清除的短期对象的分配。如果您认为存在内存泄漏,请拍摄堆转储快照并查看堆中保留了哪些对象。您可以使用 JConsole 拍摄快照并使用 HPjmeter 打开生成的转储文件.

关于java - 分析内存时使用哪个 GC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302282/

相关文章:

java - 使用 java 将文本文件修剪到第一列

键盘扩展中 advanceToNextInputMode 后的 iOS 内存泄漏

java - 如何在特定情况下捕获OnTouchEvent?

java - 将应用程序与 VC++ 应用程序集成

java - Apache Wink Json REST Web 服务

c++ - 当堆分配的构造函数参数抛出 C++

java - "Do not place Android context classes in static fields; this is a memory leak"- 静态 View 的 Lint 警告

scala - Scala actor应用程序的奇怪GC行为

python - timeit 如何受列表文字长度的影响?

java - 垃圾收集行为