在现实生活场景中,您使用垃圾收集器
本文关键字:收集器 生活 | 更新日期: 2023-09-27 17:50:27
我知道所有的理论:
我知道什么是GC,什么时候调用dispose,当它被调用时完成。
我想知道,在你的生活项目中…在哪个场景中使用了所有这些
- 我的意思是当项目经理/客户坚持要你这么做清理内存?当你发现程序中有错误吗?种错误消息还是错误日志?当你的程序崩溃了,因为不必要的记忆?或者其他的场景吗?
您不应该关心何时以及如何调用GC。它足够智能,知道什么时候运行和释放什么对象。
您还应该Dispose,无论是手动还是使用"using"实现IDisposable的所有对象。这样就可以防止非托管资源(如文件)出现许多错误。
如果内存不足,那么你的算法或代码本身就有问题。手动调用GC。非常不鼓励使用Collect,特别是在生产代码中。
根据经验,如果您聚合了一个一次性对象,或者您持有一个非托管资源,则需要实现IDisposable。这两种场景的清理工作是不同的。否则,保持简单,不要在代码中使用dotnetisms
。这里也有类似的问题
内存泄漏导致服务器崩溃。因果关系
资源管理是你必须要做的事情。不是"我的当事人坚持要我释放内存"。这是很好的练习。不是所有的应用程序都可能崩溃,用户只是重新启动它们——有一个或其他服务器应用程序在那里。
如果你开始构建你的编程库,资源管理和并发性应该是你的首要任务,否则你将永远无法实现任何解决方案。
hth
马里奥