一尘不染

Java System.gc()什么时候做点什么?

java

我知道Java中的垃圾回收是自动化的。但是我知道,如果你调用System.gc()代码,那么JVM可能会或可能不会决定此时执行垃圾回收。这究竟如何工作?JVM看到时会根据什么基础/参数确切地决定执行(或不执行)GC System.gc()

在这种情况下,是否有任何示例是个好主意呢?


阅读 474

收藏
2020-02-28

共1个答案

一尘不染

实际上,它通常决定进行垃圾回收。答案取决于许多因素,例如您正在运行的JVM,它处于哪种模式以及正在使用哪种垃圾收集算法。

我不会在您的代码中依赖它。如果JVM即将抛出OutOfMemoryError,则调用System.gc()不会停止它,因为垃圾收集器将尽力释放它,直到达到极限为止。我唯一看到它在实践中使用过的是在IDE中,它附加到用户可以单击的按钮上,但是即使在那儿它也不是很有用。

2020-02-28