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