Java垃圾收集器方法

时间:2014-09-29 05:17:15

标签: java garbage-collection

我正在尝试了解垃圾收集器方法

  

"在Java中,您的程序必须调用垃圾收集器方法   经常;否则你的程序将被垃圾覆盖   对象"

我认为这是假的,因为程序应该自动执行此操作,在后台运行正确吗?

3 个答案:

答案 0 :(得分:4)

正确。事实上,没有垃圾收集器方法(System.gc()是一个暗示,现在可能是垃圾收集的好时机,但它只不过了)。 JVM,如果它实现垃圾收集(以及所有Java SE和Java EE),它将根据自己的规则进行收集,这些规则通常包括同时清理短期对象,并在内存开始变低时执行主要收集或碎片。

答案 1 :(得分:0)

虽然通常调用System.gc()被认为是坏的,坏的,坏的,非常糟糕的做法,但在某些情况下,这可能会阻止内存不足错误。这主要是当您以非常快速的顺序分配大量对象并且有时间时,其中许多对象不再被引用并且可以被删除。虽然System.gc()只是一个提示,但有时系统可能需要此提示。或者,您可以重新考虑算法。

然而,对于较新的Java版本,这些情况越来越少见;过去比较常见。从官方角度来看,永远不会手动调用垃圾收集器。

答案 2 :(得分:0)

方法System.gc()不一定调用垃圾收集器。垃圾收集依赖于JVM实现。例如,当您执行System.gc()时,Linux JVM实际上可能会调用GC.Windows JVM可能不会。

假设您在内存中有太多无法访问的对象,但您仍有足够的堆空间,因此JVM可能决定不运行GC线程。所以结论“当你调用System.gc()并且没有必要调用它时,没有保证GC线程会运行。”

这是Java的主要优势之一,开发人员无需担心内存管理和内容。不像C ++,你需要做像

这样的事情
free(obj);