Ste*_*pUp -1 c# garbage-collection
它不是重复的,我想在C#的上下文中了解这一点.
我有这样的课程:
public class A
{
public List<string> AList { get; set; }
}
public class B
{
public List<string> BList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
想象一下,row 6发生垃圾收集:
1 row: A objectA = new A();
2 row: B objectB = new B();
3 row: objectA.AList = new List<string>() { "1", "2", "3" };
4 row: objectB.BList = objectA.AList;
5 row: objectA = null;
6 row: //Garbage collection occurs
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
我的第二个问题是关于如何在堆中分配对象,以下图像是否正确.我的意思是,objectA.AList放在一个圆圈(上图)或圆圈附近(下图):
是的,objectA引用的变量将是 - 或至少可能是垃圾收集.有没有提到它了.(不能保证它会"很快"收集,但它有资格进行垃圾收集.)
objectA.AList引用的列表不会被垃圾收集,因为objectB.BList现在引用它.
第一个图表的问题是一个对象在另一个对象的"内部".这不是它的工作方式 - 一个对象只是维护对另一个对象的引用,但每个对象实际上是一个独立的内存片段......如果没有任何引用从特定对象,它就有资格进行垃圾收集.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |