我可能不理解conecept或我做错了什么.我对.NET中的内存管理有一些疑问.
想象一下情况:
Form1是大人物形式,作为MDI - 父母和一点点FormChild,被束缚为孩子:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void simpleButton1_Click(object sender, EventArgs e)
{
FormChild formChild = new FormChild();
formChild.MdiParent = this;
formChild.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,孩子正在分配一点内存作为模拟:
public partial class FormChild : Form
{
private readonly List<byte[]> _list = new List<byte[]>();
public FormChild()
{
InitializeComponent();
}
private void FormChild_Load(object sender, EventArgs e)
{
int i = 0;
while (i < 100)
{
_list.Add(new byte[1024 * 1024 * 10]);
i += 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用内存分析器检查内存堆中的内容.我明白了,如果我点击按钮,就会分配内存.然后我关闭它FormChild并调用它Dispose().但内存仍然分配.如果我再次点击一个System.OutOfMemoryException发生.
为什么GC等待释放托管内存?或者这是我的设计错误?
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |