我有一个程序使用ListView将大量数据打印到用户界面。它有时可以填充超过500MB的数据,但这不是我的问题。我的问题是,如果我尝试通过listview.Items.Clear();
清除列表视图中的项目,我的应用程序的内存消耗只会下降一小部分,并且就在那里。来自全新Windows窗体的内存示例只包含一个列表视图:
内存值来自任务管理器。
我的问题是listview.Items.Clear()并没有释放listview项目占用的所有内存,据我所知。
相关信息:在我的测试程序中,它包含的是一个带有'details'视图属性的ListView,以及一列。
相关代码:
public void Test()
{
for (int i = 0; i < 50000; i++)
{
listView1.Items.Add(new ListViewItem("test"));
}
}
private void listView1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
}
答案 0 :(得分:0)
清除列表视图不会处理这些项目,这就是内存保持不变的原因。
但是,如果项目未在项目的任何位置引用,则当垃圾收集器启动时,它们将被正确处理并且内存将再次关闭。