Bra*_*rad 8 c# garbage-collection
我有一个程序打开一个Excel COM对象,做一些东西,并关闭它.然后我想在文件关闭后移动它.如果我运行没有断点的程序,这可以正常工作.但是,如果我在尝试移动文件之前进入调试模式,我会得到一个IOException:"进程无法访问该文件,因为它正被另一个进程使用."
那是什么交易?当一个程序被允许以全速运行而不是在我踩过它时,垃圾收集是否表现更好?踩着我的代码做的不仅仅是非常缓慢地运行它吗?调试模式还有其他后果吗?遇到的其他错误只是因为我在调试而没有运行exe?
Jon*_*eet 18
不在调试器中运行时,垃圾收集的优化方式不同,是的.特别是,CLR可以检测到变量不会用于方法的其余部分,并将其视为不再是GC根.在调试器中,范围中的变量在整个方法中充当GC根,因此您仍然可以使用调试器检查值.
然而,这应该很少成为一个问题 - 它应该只影响事情,如果终结者实际执行一些清理,如果你明确地及时整理事情(例如与using陈述),你通常不会注意到差异.
| 归档时间: |
|
| 查看次数: |
2765 次 |
| 最近记录: |