代码之家  ›  专栏  ›  技术社区  ›  GuruKulki

垃圾收集器和finalize()方法

  •  1
  • GuruKulki  · 技术社区  · 15 年前

    你们可能会认为,在15-20分钟内,我就同一主题问了4-5个问题,所以我可能需要一个关于这方面的教程。但我是通过阅读有关GC的文章来了解这些问题的。

    所以我的问题是,即使同一个对象在finalize()方法中无法进行垃圾收集,GC也只会在实例的生命周期中调用finalize()方法一次。所以我想知道GC在第二次收集finalize()方法时,如何知道它已经执行了一次finalize()方法

    3 回复  |  直到 15 年前
        1
  •  4
  •   Steven Schlansker    15 年前

    它们很慢,没有很好的定义(有时它们永远不会运行!),通常是皮塔。

        2
  •  1
  •   Laurence Gonsalves    15 年前

    依赖于实现。想必VM在每个对象上都有一个秘密位,或者有一个包含已“完成”的对象的表。如果我不得不猜测的话,我会说后者,因为据推测,仍然挂在周围的已经完成的对象集应该很小,所以在系统中的每个对象上都有一点似乎有点浪费。

        3
  •  0
  •   SyntaxT3rr0r    15 年前

    啊,又是你:)

    强迫

    “此函数不会导致运行终结器。”

    再一次,你可能真的不想这么做,但是如果你有2K+rep和5个关于GC的问题,你会认为有意思的是,不断重复使用JVMTI的ForceGarbageCollection,你真的可以 强迫 GC。

    关于如何强制GC的权威信息:

    http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection