Ame*_*mey 6 c# garbage-collection
我有一个非常基本的问题.
我写了一个这样的循环:
while(true)
{
MyTestClass myObject = new MyTestClass();
}
Run Code Online (Sandbox Code Playgroud)
myObject = null;在每次迭代结束时写下怎么办?Mar*_*ell 10
myObject是变量 - 在堆栈上有一个固定的位置供参考; 但是,每个new MyTestClass()都是一个不同的对象,在可用堆空间的某处创建; 每次都不一样while实际实现 - 但这只会在退出循环后显示.因为在每次迭代中你都会立即分配它,所以这里没有明显的区别什么时候会在循环中创建对象,垃圾收集?
在最后一次引用之后的某个时刻被移除.在每次循环迭代中创建并删除新引用,因此GC可以在需要时自由地收集这些对象.实际上,当你的程序完全填满零代时,很可能会发生这种情况.
此外,对于每次迭代,是否将新内存位置分配给myObject引用?
是.
如果我
myObject = null;在每次迭代结束时写下怎么办?
它没有任何区别.设置myObject = null;将删除对该对象的引用,但myObject在下一次循环迭代中重新分配变量时,无论如何都会删除引用.
| 归档时间: |
|
| 查看次数: |
1997 次 |
| 最近记录: |