我相信通过GC实现者的设计,您无法通过无效化来加速 GC。我敢肯定,他们宁愿你不是如何/ GC运行时担心自己-把它像这种无处不在的被保护和看守,并为你......(弓低着头,拳头提高到天空).. 。
就个人而言,在完成自变量形式的工作后,我经常将变量显式设置为null。我不声明,使用,以后再设置为null -在不再需要它们后立即将其设置为null。我的意思是,明确地说,“我已经正式与您完成了……走了……”
使用GC语言是否需要取消作用?否。这对GC有帮助吗?也许是,也许不是,不确定,通过设计我真的无法控制它,无论今天使用此版本的答案是什么,或将来的GC实现都可能会改变答案,超出我的控制范围。另外,如果/当优化了空值时,如果您愿意,它仅是一个花哨的注释。
我认为,这是否会使我的意图更清楚地跟进跟随我的脚步的下一个可怜的傻瓜,并且如果它“可能”有时会帮助GC,那么这对我来说是值得的。通常,它使我感到整洁和清晰,而Mongo喜欢感到整洁和清晰。:)
我是这样看的:编程语言可以使人们了解意图,并且编译器可以完成工作的工作请求-编译器将该请求转换为CPU的另一种语言(有时是几种语言)- CPU可以提供您所使用的语言,选项卡设置,注释,风格重点,变量名等信息。CPU就是位流的全部内容,它告诉它哪些寄存器和操作码以及存储器位置在发生变化。按照我们指定的顺序,用代码编写的许多东西不会转换为CPU消耗的东西。我们的C,C ++,C#,Lisp,Babel,汇编器或任何其他理论而非实际内容均以工作说明的形式编写。所看到的不是获得的结果,是的,即使是汇编语言也是如此。
我确实理解“不必要的事情”(如空行)的心态“除了杂乱无章的代码外,别无其他。” 那是我职业生涯的早期。我完全明白。在这个关头,我倾向于使代码更清晰的东西。这不像我要在程序中添加50行“噪声”,而是在这里或那里几行。
任何规则都有例外。在具有易失性内存,静态内存,竞争条件,单例,使用“过时”数据和所有此类腐烂的情况下,这是不同的:您需要管理自己的内存,以适当的方式锁定和无效,因为内存不是其中的一部分GC'd Universe-希望每个人都能理解。其余时间使用GC语言,这只是样式问题,而不是必要或有保证的性能提升。
在一天结束时,请确保您了解哪些内容符合GC资格,哪些不符合;适当地锁定,处置和废止;上蜡,下蜡;吸气,呼气;对于其他所有内容,我都会说:如果感觉不错,那就去做。您的里程可能会有所不同。