Jer*_*iah 10 .net c# garbage-collection memory-leaks
我正在学习C#.据我所知,您必须正确设置以使垃圾收集器实际删除所有内容.我正在寻找多年来从你那里学到的智慧,聪明.
我来自C++背景,非常习惯代码气味和开发模式.我想知道C#中的代码气味是什么样的.给我建议!
删除内容的最佳方法是什么?
如何解决"内存泄漏"问题?
编辑:我正在尝试开发一个"总是为内存管理做的东西"的列表
非常感谢.
Dea*_*unt 18
C#,.NET Framework使用托管内存,所有内容(但分配的非托管资源)都是垃圾回收.
可以安全地假设托管类型总是被垃圾收集.那包括arrays,classes和structures.随意做int[] stuff = new int[32];,忘记它.
如果在类中打开文件,数据库连接或任何其他非托管资源,请实现IDisposable接口,并在Dispose方法中取消分配非托管资源.
任何实现IDisposable的类都应该显式关闭,或者在(我认为很酷)使用块中使用;
using (StreamReader reader = new StreamReader("myfile.txt"))
{
... your code here
}
Run Code Online (Sandbox Code Playgroud)
这里.NET将在{}范围之外处置读取器.
Mar*_*ell 11
GC的第一件事是它是非确定性的; 如果你想及时清理资源,实施IDisposable和使用using; 这不会收集托管内存,但可以帮助很多非托管资源和转发链.
特别需要注意的事项:
为了调查内存泄漏......"SOS"是最简单的路线之一; 您可以使用SOS查找类型的所有实例,以及可以看到它的内容等.
| 归档时间: |
|
| 查看次数: |
11984 次 |
| 最近记录: |