----------------------------------c#如何释放内存?----------------------------------

by_封爱 by_封爱 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我来描述下背景.可能我所谓的释放跟你们想象的不太一样.

你们可能觉得Dispose下或者using下甚至GC.Collect就可以释放内存..

但是我要说的不是一回事..

一个win程序加载的时候

我们假设有100个静态的List<T> =>t,窗体中有一个全局的timers.timer=>t以及List<int>=>lx
代码也简单

t.Elapsed += (o, e) =>
{
//可能通过一些逻辑判断从静态的list里取值并且给UI的文本框赋值
var list=static.t;
textbox1.BeginInvoke(new action(()=>{
textbox1.text=list.find(d=>d.name="小明").age;
lx.add(1);//这句我认为可能导致内存增加..所以有了下面一句
if (lx.Count >= 2000)
{
lx.RemoveRange(0, lx.Count - 2000);
}
}));
}

看起来似乎好像大概也没什么问题..静态变量加载的时候就有值了 lx集合也判断了.

但是这个程序运行很久之后 从任务管理器中看到这个exe的内存很高 并且持续++++

甚至运行2个月之后导致内存溢出或者其他无法捕获的错误(多内存错误)

所以我如何才能让我的exe得到及时的释放?
...全文
评论 25
收藏 已收藏
分享
返回顶部
by_封爱
C# 111,129 成员 642,540 内容