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

使对象显式地进行垃圾收集的方法

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

    我已经读过让一个对象显式地被垃圾收集,在很多方面。所以我想知道一些让它显式地被垃圾收集的方法

    4 回复  |  直到 15 年前
        1
  •  6
  •   Bozho    15 年前

    无法进行显式垃圾收集。

    您可以通过调用以下命令“礼貌地要求”虚拟机进行垃圾收集:

    System.gc();
    

    但这并不能保证它会。

    调用GC方法表明Java虚拟机花费精力去回收未使用的对象,以便使它们当前占据的内存能够快速重用。当控件从方法调用返回时,Java虚拟机尽最大努力从所有丢弃的对象中回收空间。

    “最大的努力”可能是推迟垃圾收集。

    有关如何使垃圾收集的对象可省略为 Effective Java, Chapter 2

        2
  •  2
  •   Cuga    15 年前

    通过将对对象的所有引用设置为,可以显式地使对象符合垃圾收集的条件。 null .

    这不会调用垃圾收集器本身,但是当收集开始时,它将收集这个对象。

    最好让Java垃圾回收器自动完成这一切。它已经被优化到比任何你想做的事情都更好、更高效的程度。

        3
  •  1
  •   GuruKulki    15 年前

    gc命令jvm显式执行垃圾收集器。

    但是,我知道一些使对象显式地被垃圾收集的方法是:

    将其引用赋值为空 例如:动物A=新动物(); A =空

    将其引用指定给另一个对象。 示例:动物A1=新动物(); A1=新动物();

        4
  •  1
  •   Cuga    15 年前

    你不应该担心强制一个GC,除非你自己在写一个类似visualvm的工具。

    NetBeans、Intellij、VisualVM和许多其他软件都可以 一个GC,不是提示,而是真正的强制。使用jvmti可以强制GC。

    但是 你可能又一次 不是 想这么做。

    使用jvmti的forceGarbageCollection的gc(不是提示)。

    也就是说,你可能真的 想这样做(它真的暴露了重复)。

    如果你真的想知道(但你可能不知道)如何强制执行GC,那么关于这个主题的权威信息是:

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