C#的GC机制,委托机制与Unity内存泄露

项目测试中遇到闪退问题,经检测发现因代码导致内存泄露。文章探讨了C#的GC机制与引用计数的区别,并非如预期那样简单。通过云风的博客了解到GC的工作原理,同时指出事件注册也可能导致内存泄露,建议开发者注意事件的注册与注销以及成员变量的使用,以避免内存问题。
摘要由CSDN通过智能技术生成

最近项目测试然后发现有很多闪退的情况,用工具去检测了下确定是程序代码导致内存泄露的,然后就去找了发现了代码中存在下图中所示的写法(这只是个例子并不是实际情况)

开始的时候想当然了,认为按照引用计数这种原理,People这个对象创建之后,如果不手动把Hand中People对象置为NULL,然后再把People这个对象置为NULL是无法释放掉的,但是在我把这两个对象都置为null之后还是没有得到释放。我比较怀疑C#的GC机制和引用计数是一个东西?,然后就去查了下资料,这里附上云风的博客链接https://blog.codingnow.com/2008/06/gc.html,里面对比了GC和引用计数的区别。我简单介绍下。

GC与引用计数的区别:

    GC在触发的时候会去遍历所有的对象,把所有的引用构成一张有向图,对于那些已经超出作用域死亡了的对象会打上清除标记,那些还在作用域内或者被其他对象引用的对象则不会打上标记。而对于互相引用的这种特殊情况,如果他们都已经不在作用域内且没有另外的外部变量引用,GC会把他们打上清除标记。但是引用计数并不是这样,引用计数会
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值