Dispose没有释放内存

wozhaozhe2008 2020-01-02 10:56:36

public void ShowLoadDlg()
{
LoadDlg = new Form();
LoadDlg.Show();
}
public void CloseDlg()
{
LoadDlg.Dispose();
}
我执行ShowLoadDlg()后在调用CloseDlg()。用IsDispose判断是已经释放成功了的。
但内存没有被释放,
如果我一直创建再关闭。那么内存会一直增加,而并不会减少。
...全文
308 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-01-03
  • 打赏
  • 举报
回复
GC.Collect()看看吧,
但我个人感觉没必要
exception92 2020-01-03
  • 打赏
  • 举报
回复
应用程序启动时CLR会分配虚拟空间大小,当应用程序所需内存大于这个值时,会频繁的发生GC操作,也就是压缩那些无引用的对象所占用的内存,可以说是那些“已经离开作用域”或者调用dispose方法的对象。GC有自己的算法来度量应用程序运行时所占内存的变化,以确保程序能够处于最佳状态。
datafansbj 2020-01-03
  • 打赏
  • 举报
回复
Dispose 仅仅表示我不再使用这个对象,可以释放了。至于究竟何时释放出内存,是由垃圾收集器来自动处理的,我们不必关心。
ying1234 2020-01-03
  • 打赏
  • 举报
回复
并不是Disponse()了马上就会回收内存,这个你不用操心了。
wozhaozhe2008 2020-01-03
  • 打赏
  • 举报
回复
引用 4 楼 正怒月神 的回复:
GC.Collect()看看吧,
但我个人感觉没必要

你这方式可以立即释放。
wozhaozhe2008 2020-01-03
  • 打赏
  • 举报
回复
引用 6 楼 兔子家族-二哥 的回复:
LoadDlg 直接关闭撒? LoadDlg.Close() 你看看呢
一样的。我试过了 并不会立即释放内存
  • 打赏
  • 举报
回复
LoadDlg 直接关闭撒? LoadDlg.Close() 你看看呢
wozhaozhe2008 2020-01-03
  • 打赏
  • 举报
回复
谢谢!懂了,我还以为我没释放成功呢
多个C#多线程开发实例 using System; using System.Collections.Generic; using System.Text; namespace Example20 { class Program { class Class1 : IDisposable { //析构函数,编译后变成 protected void Finalize(),GC会在回收对象前会调用调用该方法 ~Class1() { Dispose(false); } //通过实现该接口,客户可以显式地释放对象,而不需要等待GC来释放资源,据说那样会降低效率 void IDisposable.Dispose() { Dispose(true); } //将释放非托管资源设计成一个虚函数,提供在继承类中释放基类的资源的能力 protected virtual void ReleaseUnmanageResources() { //Do something... } //私有函数用以释放非托管资源 private void Dispose(bool disposing) { ReleaseUnmanageResources(); //为true时表示是客户显式调用了释放函数,需通知GC不要再调用对象的Finalize方法 //为false时肯定是GC调用了对象的Finalize方法,所以没有必要再告诉GC你不要调用我的Finalize方法啦 if (disposing) { GC.SuppressFinalize(this); } } } static void Main(string[] args) { //tmpObj1没有手工释放资源,就等着GC来慢慢的释放它吧 Class1 tmpObj1 = new Class1(); //tmpObj2调用了Dispose方法,传说比等着GC来释放它效率要调一些 //个人认为是因为要逐个对象的查看其元数据,以确认是否实现了Dispose方法吧 //当然最重要的是我们可以自己确定释放的时间以节省内存,优化程序运行效率 Class1 tmpObj2 = new Class1(); ((IDisposable)tmpObj2).Dispose(); } } }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧