您在哪个现实生活场景中使用了垃圾收集器?
我知道所有的理论:
我知道什么是 GC,何时调用 dispose,何时调用 Finalize。
我想知道,在您的实时项目中..在哪个场景中使用了这一切。
- 我的意思是当项目 经理/客户坚持要求你这样做 清理内存?当你发现 程序有什么错误吗?有点儿 错误消息或错误日志?什么时候 你的程序崩溃是因为 不需要的记忆?或任何其他 场景?
I know all the theories :
I know what is GC, when to call dispose, Finalise when it is getting called.
I would like to know, in your live project ..in which scenario have used all this.
- I mean when the project
manager/client insisted you to
cleanup the memory ? When you find
any errors in the programs? Kind of
error messages or error logs? When
your program got crashed because of
unwanted memory? or any other
scenarios?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不应该关心 GC 何时以及如何被调用。它足够智能,知道何时运行以及释放哪些对象。
您还应该手动或使用“使用”实现 IDisposable 的所有对象进行 Dispose。然后,您将可以防止非托管资源(例如文件)的许多错误。
如果你的内存不足,那么你的算法或代码本身就有问题。强烈建议不要手动调用 GC.Collect,特别是在生产代码中。
You should not care when and how GC is called. It is inteligent enough to know when to run and what objects to free.
You should also Dispose, either manualy or using "using" all objects, that implement IDisposable. You will then prevent many errors with un-managed resources, like files.
And if you are running out of memory, then there is something wrong with your algorithm or code itself. Manualy calling GC.Collect is heavily discuraged, especialy in production code.
根据经验,如果聚合一次性对象,或者保留非托管资源,则需要实现 IDisposable。对于这两种情况,清理工作的方式有所不同。否则,保持简单,不要在代码中乱扔点网络
这里有类似的问题
内存泄漏导致服务器崩溃。因果。
As a rule of thumb, you need to implement IDisposable if you aggregate a disposable object, or if you hold on to an unmanaged resource. Cleanup is done differently for these two scenarios. Otherwise, keep it simple, don't litter your code with dotnetisms
Similar question here
Memory leaks cause crashed up servers. Cause and effect.
资源管理是您必须要做的事情。这不是“我的客户坚持要我释放我的记忆”。这只是一个很好的做法。并非所有应用程序都可能崩溃,用户只需重新启动它们即可 - 存在一个或其他服务器应用程序。
如果您开始构建编程库,资源管理和并发性应该是您的首要任务,否则您将永远无法加快实施任何解决方案的速度。
马里奥
Ressource management is something you just havce to do. It is not 'my client insisted I free my memory'. It is simply good practice. Not all applications may crash and the user just restarts them - there is one or other server application out there.
If you start building your programming libraries, ressource management and concurrency should be your top priority, otherwise you will never be up to speed implementing any solution.
hth
Mario