我有一个使用 ListView 将大量数据打印到用户界面的程序。它有时可以容纳超过 500MB 的数据,但这不是我的问题。我的问题是,如果我尝试通过 listview.Items.Clear();
我的应用程序的内存消耗来清除列表视图中的项目,只会下降一小部分,并坐在那里。来自一个全新的 Windows 窗体应用程序的内存示例,其中只有一个列表视图:
- 7,812K - 程序运行时未添加列表视图项。
- 26,816K - 填充了 50000 个分配给值“test”的 ListView 项
- 22,860K - 清除前 50000 个 ListView 项目后的内存。
内存值来自任务管理器。
我的问题是 listview.Items.Clear() 没有释放 listview 项目占用的所有内存,据我所知。
相关信息:在我的测试程序中,它只包含一个具有“详细信息”视图属性的 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();
}