加了定时器后程序运行占用的内存随着自动增加,郁闷啊! VC#里加了一个定时器,但是随着运行程序后,发现所占用的内存,随着定时器的触发一点点地增加,好像是资源没有回收的样子,请高手指点一下啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //timer1的Interval值是100private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e){ label1.Text=DateTime.Now.ToString();}就这样,它就一直增加内存占用啊! private int a;a=0;//timer1的Interval值是100private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e){ label1.Text=(++a).ToString();}就算不取系统时间,这样子也不行啊!它还是一直增加内存占用啊! LZ完全不必担心,通过看源代码此方式是一点问题都没有的.GC会在适当的时间来执行垃圾回收的,这和C++是不一样的,同时也不存在内存泄漏的问题.关于内存增加的原因是因为这个的操作的".ToString()"字符串是不可编辑或修改的CLASS,每次使用均创建一个新的实例,因此不停的创建新实例,旧的实例占用的内存没有释放,内存会增加的,当然在执行垃圾回收后这些内存会释放的. zhiang75(zhiang75): 我可不可以自己在使用完对象时手动回收,具体应该怎么做呢? 可以使用GC.Collect();进行强制垃圾回收。 private void timer1_Tick(object sender, System.EventArgs e) { Thread th=new Thread(new ThreadStart(GetTime)); th.Start(); } private void GetTime() { statusBarPanel6.Text=DateTime.Now.ToLongTimeString(); } 发错了,进行强制垃圾回收,内存增长缓慢.private void timer1_Tick(object sender, System.EventArgs e) { Thread th=new Thread(new ThreadStart(GetTime)); th.Start(); } private void GetTime() { statusBarPanel6.Text=DateTime.Now.ToLongTimeString(); GC.Collect(); } 通过Com操作Excel,加载Excel模板超时 OpenFileDialog控件OpenFiles方法 用采集软件采集A站数据,过一段时间A站访问慢什么原因 如何访问NT server 支付宝支付成功后跳转到指定页接收参数的问题 将XML添加到treeview ?另有两帖每贴20分 答出一并给了~ 如何获得最后打开的IE中的地址呢 vs.net 2003 新建ASP应用程序,dataGrid为啥不显示? 如何在画面上做上升沿触发 求 C#注册mysql自定义函数的例子 求助!!! 水晶报表的问题!求前辈们帮助!!!!! 请usepc进来领上以帖分。
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
label1.Text=DateTime.Now.ToString();
}就这样,它就一直增加内存占用啊!
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
label1.Text=(++a).ToString();
}就算不取系统时间,这样子也不行啊!它还是一直增加内存占用啊!
GC会在适当的时间来执行垃圾回收的,这和C++是不一样的,同时也不存在内存泄漏的问题.关于内存增加的原因是因为这个的操作的".ToString()"字符串是不可编辑或修改的CLASS,每次使用均创建一个新的实例,
因此不停的创建新实例,旧的实例占用的内存没有释放,内存会增加的,当然在执行垃圾回收后这些内存会释放的.
我可不可以自己在使用完对象时手动回收,具体应该怎么做呢?
GC.Collect();
进行强制垃圾回收。
{
Thread th=new Thread(new ThreadStart(GetTime));
th.Start();
}
private void GetTime()
{
statusBarPanel6.Text=DateTime.Now.ToLongTimeString();
}
{
Thread th=new Thread(new ThreadStart(GetTime));
th.Start();
}
private void GetTime()
{
statusBarPanel6.Text=DateTime.Now.ToLongTimeString();
GC.Collect();
}