首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么要处理一个肯定很快就会被处理的对象呢?

为什么要处理一个肯定很快就会被处理的对象呢?
EN

Stack Overflow用户
提问于 2015-12-20 02:09:04
回答 4查看 425关注 0票数 4

假设我有一个用于点击按钮的过程。

我创建了一个Graphics对象。

显然我应该把它处理掉。

代码语言:javascript
运行
复制
using(Graphics gr__=this.CreateGraphics())  {

} 

或者在try-catch-finally的finally中调用.Dispose()

但考虑到这个过程很快就会结束。

假设我在过程本地创建它(不是全局的,也不是在使用中创建的)。但对程序来说是局部的。

那么,就像任何其他变量一样,它将在过程完成时自动处理,不是吗?

那么,为什么手动/显式地处理它对我来说很重要?

为什么我不能让它像其他变量一样自动进行垃圾回收呢?

当然,它可能会比'int‘大一点,但它可能仍然很小,不会在内存中呆很长时间,因为这个过程结束得太快了。它甚至可能是在使用结束或调用Dispose()之后,过程结束,因此我认为如果变量是过程的局部变量,它就会被释放。那么,为什么还要为Dispose()/using的显式垃圾收集而烦恼呢?

EN

Stack Overflow用户

发布于 2015-12-20 02:49:23

通常,您无法知道对象何时会被垃圾回收,从而被释放。

在释放之前,一些对象将保留对资源的引用,这些资源将使用您的内存或禁止某些操作。因此,最好在这些对象不再使用时立即将其丢弃。

我正在处理一个bug,其中一个临时的SQLite数据库文件在使用后无法删除,但只有在某些时候才会删除!经过三天令人沮丧的研究,我发现问题出在一个没有及时处理的SQLite命令对象。

所以使用你的using ;-)

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34373828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档