菜鸟在这里。假设我做了一个这样的函数:
public void something()
{
List<string> list = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)
然后我打电话给something()
10x。它会创建 10 个同名对象,还是会替换为新的空对象,因此对象总数仍为 1?这样做会导致内存泄漏吗?抱歉英语不好。
是的,如果调用 10 次,它将创建 10 个新对象。不,这不会导致内存泄漏1。使用带有垃圾收集器的托管语言工作的要点之一是,大多数时候您不必考虑内存是如何使用的2。
每次调用都创建一个新的实例也很好List
- 因为现在越来越多,您将有多个线程运行您的程序,并且您不希望同时发生的两个调用干扰彼此的使用list
.
1为了正确地成为 .NET 中的内存泄漏,您需要一些长期存在的东西来保留对应该是短期存在的对象的引用,而当它永远不会实际使用这些引用时。局部变量(例如此处)的生命周期相对较短。
2如果您真的很在意,最好学习使用内存分析器来查看哪些内存在何处使用。
归档时间: |
|
查看次数: |
66 次 |
最近记录: |