假设我有一个用于点击按钮的过程。
我创建了一个Graphics对象。
显然我应该把它处理掉。
using(Graphics gr__=this.CreateGraphics()) {
} 或者在try-catch-finally的finally中调用.Dispose()。
但考虑到这个过程很快就会结束。
假设我在过程本地创建它(不是全局的,也不是在使用中创建的)。但对程序来说是局部的。
那么,就像任何其他变量一样,它将在过程完成时自动处理,不是吗?
那么,为什么手动/显式地处理它对我来说很重要?
为什么我不能让它像其他变量一样自动进行垃圾回收呢?
当然,它可能会比'int‘大一点,但它可能仍然很小,不会在内存中呆很长时间,因为这个过程结束得太快了。它甚至可能是在使用结束或调用Dispose()之后,过程结束,因此我认为如果变量是过程的局部变量,它就会被释放。那么,为什么还要为Dispose()/using的显式垃圾收集而烦恼呢?
发布于 2015-12-20 02:49:23
通常,您无法知道对象何时会被垃圾回收,从而被释放。
在释放之前,一些对象将保留对资源的引用,这些资源将使用您的内存或禁止某些操作。因此,最好在这些对象不再使用时立即将其丢弃。
我正在处理一个bug,其中一个临时的SQLite数据库文件在使用后无法删除,但只有在某些时候才会删除!经过三天令人沮丧的研究,我发现问题出在一个没有及时处理的SQLite命令对象。
所以使用你的using ;-)
https://stackoverflow.com/questions/34373828
复制相似问题