Svi*_*ish 11 c# null garbage-collection reference
CLR Profiler还可以显示哪些方法分配的存储空间超出预期,并且可以发现无意中保留对无用的对象图的引用的情况,否则这些对象图可能被GC回收.(一个常见的问题设计模式是一个软件缓存或项目的查找表,这些项目不再需要或者以后可以安全地重建.当缓存使对象图表保持活动超过其使用寿命时,这是悲剧性的.相反,请确保将参考文献归零到你不再需要的对象.) - 编写更快的托管代码
我认为我之前没有真正搞过一个参考.我假设你并不总是需要这样做,但我想有时候记得这么做很重要.但是,那是什么情况呢?什么时候应该删除引用?
Jon*_*eet 11
只有当持有引用的变量保持"活动"但您不希望引用本身阻止垃圾回收时,您才需要这样做.换句话说,如果对象A持有对象B的引用,并且您不再需要B,但A将因其他原因而保持活动状态.另一个常见的例子是静态变量,只要AppDomain是"活着的".
对于局部变量,它几乎从不需要,因为GC可以检测代码中最后一个可能访问变量的点.但是,如果在第一次迭代期间使用在循环外声明的变量,但是您知道在后续迭代中不需要它,则可以将其设置为null以帮助该对象更早地符合GC的条件.
根据我的经验,在这种情况下发现自己是非常罕见的.为了GC,我几乎没有考虑将变量设置为null.通常,对象中的所有成员变量都是"有用的",直到对象本身符合GC的条件.如果您发现自己的成员变量对于对象的整个生命周期都没有用,您可能希望查看是否表示设计存在问题.
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |