热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#中的循环引用问题及其解决方案

在C#中,循环引用问题通常涉及到对象之间的相互引用,这可能会导致垃圾回收器无法正确释放内存。然而,C#的垃圾回收机制能够处理大多数循环引用的情况,确保内存得到有效管理。对于静态变量和复杂的数据结构,开发者需要特别注意,以避免潜在的内存泄漏。例如,通过使用弱引用或手动断开引用关系,可以有效解决这些问题。

https://bbs.csdn.net/topics/330120571/

c# 环形引用 垃圾回收机制是会清理掉的。

static int a = 0;public class ClassA{public ClassB classB;public ClassA(){classB = new ClassB(this);a++;}~ClassA(){Console.WriteLine("ClassA");}}public class ClassB{ClassA classA1;public ClassB(ClassA classA){classA1 = classA;}~ClassB(){Console.WriteLine(a + "");Console.WriteLine("ClassB");}}

测试函数:

List<ClassA> lis &#61; new List<ClassA>();//while (true){lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Add(new ClassA());lis.Clear();GC.Collect();Thread.Sleep(10);}}

输出&#xff1a;

8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA
8
ClassB
ClassA


推荐阅读
author-avatar
吴盛雪佩儒政义
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有