我知道垃圾收集在 Java 中是自动进行的。但我知道,如果您在代码中调用 System.gc(),JVM 可能会也可能不会决定在此时执行垃圾收集。这具体是如何运作的?当 JVM 看到 System.gc()
时,它到底根据什么基础/参数决定执行(或不执行)GC?
是否有任何示例可以说明将其放入代码中是个好主意?
最佳答案
实际上,它通常决定进行垃圾收集。答案会因多种因素而异,例如您运行的 JVM、它所处的模式以及它使用的垃圾收集算法。
我不会在你的代码中依赖它。如果 JVM 将抛出 OutOfMemoryError,调用 System.gc() 不会阻止它,因为垃圾收集器将在达到这种极端情况之前尝试释放尽可能多的内存。我唯一一次看到它在实践中使用是在 IDE 中,它被附加到用户可以单击的按钮上,但即使在那里它也不是很有用。
关于java - System.gc()什么时候做某事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26533183/