举个最简单的例子,一个空的winform,添加新建项里面选择关于框,产生一个aboutbox窗体,在form1里面加入一个button1,代码如下:
private void button1_Click(object sender, EventArgs e)
{
AboutBox1 thisFrom = new AboutBox1();
thisFrom.ShowDialog();
}
调试过程中,打开一次aboutbox窗体,内存增加一点,关闭后并没有减少。
我在做复杂的向导对话框时内存增加更多,怎么才能释放占用的内存呢?
private void button1_Click(object sender, EventArgs e)
{
AboutBox1 thisFrom = new AboutBox1();
thisFrom.ShowDialog();
}
调试过程中,打开一次aboutbox窗体,内存增加一点,关闭后并没有减少。
我在做复杂的向导对话框时内存增加更多,怎么才能释放占用的内存呢?
在返回后清理
thisFrom.ShowDialog();
之后加上
thisFrom.Dispose();
如果一个项目比较大,那是不是应该每show一个窗体都dispose一下呢
在返回后清理怎么返回?我就和Knight94(愚翁) 一样处理的。
{
Form2 thisform = new Form2();
thisform.ShowDialog();
thisform.Dispose();
}form2是一个空winform
运行程序,内存17048k
执行button,内存17224k
关闭form2,内存17554k,
经过此测试,内存占用有所不同,但趋势相同,内存没有下降,反而上升,当form2复杂时情况更明显
我做的向导对话框打开一次要好几兆阿
private void button1_Click(object sender, EventArgs e)
{
GC.Collect();//Call gc to collect garbage
Form2 thisform = new Form2();
thisform.ShowDialog();
thisform.Dispose();
}