Java:为什么不存在手动对象删除

时间:2016-04-29 21:32:39

标签: java garbage-collection

您好我在谷歌搜索为什么没有手动特定对象删除功能。 (java垃圾收集正在手动完成的过程。)
它总是困惑我。我知道你不能这样做,你不应该打电话给System#gc(),但我找不到任何结果为什么你不能这样做。
为什么让gc检查对象是否处于隔离岛并浪费cpu而不是在100%确定不再使用该对象时自行删除它。 注意:我不是在谈论调用gc来丢弃所有未使用的对象。我在谈论删除一个对象(它是孩子们)。

1 个答案:

答案 0 :(得分:1)

如果您完全确定可以删除该对象,则可以使用以下方法:只对该对象的最后一个引用执行null,GC将关注其余对象。

手动内存管理不安全的原因是虽然您可能认为该对象已经成熟删除,但这仅适用于程序的当前状态。在对代码进行一些重构或进一步开发之后,它可能会变得错误,并且无法对其进行推理。在一种编程语言中,对象始终保持对彼此的引用,但它并不需要太多,直到潜在的对象图如此庞大以至于没有人能真正说出什么是引用什么。