我使用 NetBeans 分析器(实际上是一个嵌入式 VisualVM)来监视我的 Java 应用程序的内存消耗。我使用堆视图、幸存生成视图和内存转储来跟踪内存泄漏。
堆视图显示了已用内存的总量,但由于垃圾收集器管理内存的方式,它有点混乱。该图基本上是锯齿形的,因此不是特别可读。有时,我会强制 GC 发生,以便获得更精确的实际内存消耗值。
我想知道:是否有更适合内存分析的垃圾收集器,并且会产生更接近实际内存使用情况的堆图?或者更一般地说,我可以使用哪些 JVM 设置(-XX
选项或其他)来有效地跟踪内存泄漏?