gir*_*iri 6 java garbage-collection
当引用对象时,自动调用垃圾收集对任何变量都不再可用.但我想知道为什么在自动调用垃圾收集时我们使用System.gc()显式调用.我们什么时候调用System.gc();
Ste*_*ker 10
你没有.如你所说,垃圾收集是自动的.System.gc()甚至不强制垃圾收集; 它只是对JVM的暗示"现在可能是清理一下的好时机"
一般来说,试图强制垃圾收集器使用System.gc()执行您想要的操作是由认为他们比实际操作更好的人应用的黑客,或者是破坏代码的(尝试)解决方法.
我已经写Java多年了,我还没有看到调用System.gc真正做的事情(在我编写的任何内容中)
我们没有.
我们只是没有.
也许我的经验有限,但我没有发现有必要调用System.gc().
我将引用Brian Goetz关于性能方面的内容(如果你还没有听说过他,请看他 - 并阅读本文的其余内容):
开发人员经常错误地认为他们正在帮助垃圾收集器的第三类是使用
System.gc(),这会触发垃圾收集(实际上,它只是表明这可能是垃圾收集的好时机).不幸的是,System.gc()触发了一个完整的集合,其中包括跟踪堆中的所有活动对象以及扫描和压缩旧一代.这可能是很多工作.通常,最好让系统决定何时需要收集堆,以及是否进行完整收集.
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |