VisualVM 内存泄漏

6
当使用visualVM检测内存泄漏时,它允许我们查看实例视图,如下所述:
实例视图显示所选类的对象实例。当您从实例窗格中选择一个实例时,VisualVM会在相应的窗格中显示该类的字段和对该类的引用。在“引用”窗格中,您可以右键单击一个项目并选择“显示最近的GC根”,以显示最近的垃圾回收根对象。
有人能告诉我最近的垃圾回收根对象是什么,以及如何利用这些信息来帮助识别泄漏点吗?谢谢!
2个回答

5

您可能会发现这本《Sun垃圾回收》书/章节有用,特别是这一节,其中将GC根列为:

  • 堆栈上的临时变量(任何线程的)
  • 静态变量(来自任何类)
  • JNI本地代码中的特殊引用

换句话说,GC根是可以通过根持有对其引用的变量来防止另一个对象被GC的变量。


2
这些链接还能在其他地方找到吗?它们在这里(指Sun网站)已经失效了。谢谢。 - Jacob Wallace

2

GC根是静态或局部变量中保存的引用。在根中保存的引用可以防止被引用的对象被垃圾回收。

在VisualVM中,您可以使用“显示最近的GC根”功能来帮助您跟踪到您认为应该进行垃圾回收的对象的引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接