C# 内存溢出实例
发布网友
发布时间:2022-04-22 08:49
我来回答
共1个回答
热心网友
时间:2023-07-31 15:24
c, c++ 中的内存溢出是申请了内测,忘了释放,导致的内存溢出
c# 有gc 的存在,只要对象的引用不存在(申请未托管内存除外),对象就交由gc 管理释放,
所以在c# 中,没有清除引用,gc 不能释放对象,才是内存溢出的原因。
示例:
class Entity
{
//....
//是个体积很大的类
}
class DataManager
{
private static List<Entity> _ls = new List<Entity>();
public static Entity Create()
{
var entity = new Entity();
_ls.Add(entity);
}
}
//外部大量使用
var entity = DataManager.Create();
//忘了还有个 List<> 保存着引用, gc 就不会释放 create entity 的内存
//就会发现程序的内存占用越来越多
//当然,在实际的项目中,引用关系比这复杂的多得多得多,
//对象引用嵌套在一起,想排除是很难的