由于C#是一种自动执行垃圾收集以清理对象等的托管语言,...
可以引入内存泄漏的方法是什么??
是否有一些人应该注意的非显而易见的方法?
如何检测或查找内存泄漏(一旦了解了它们的生成方式等)。
答案 0 :(得分:4)
通常泄漏以开发人员编写代码的形式出现,这些代码在不应该存在时“保留”对象,随后不允许垃圾收集器收集这些对象。
垃圾收集器非常擅长它的功能,但是如果你不明白它在做什么,那么你在程序中引入内存问题的可能性非常高。
我建议您阅读GC并了解其工作原理。
这是让你入门的东西:
http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/
答案 1 :(得分:0)
两个
答案 2 :(得分:0)
在GC-ed语言中可能导致的明显的“内存泄漏”只会在需要之后保留对对象的引用 - 如果你滚动自己的缓存或保持其他全局状态,这尤其可能。 / p>
另一种方法是在未处理的非托管资源中泄漏内存,尽管大多数标准库类可能会处理析构函数中的内存,因此迟早会回收内存。
(由于问题的开放性,我将帖子标记为CW。)
答案 3 :(得分:0)
内存泄漏意味着保留在您不再需要的内存对象中。在C#中,考虑到GC收集未引用的对象,它相当于保持对不需要的对象的引用。 想想不正确的范围声明,无限递归或迭代......