多个控件实例的内存使用情况

时间:2010-01-13 17:50:26

标签: .net compact-framework

我正在使用WM6.1构建一个应用程序,很少有关于资源控制的问题。 我的应用程序是由vs2008 / .NET CF 3.5构建的

其中一个窗口形式, 我只放置一个webbrowser控件,然后运行程序,
然后打开控制面板,查看应用程序的内存使用情况,它从25MB增长到29MB,没什么特别的。

之后, 我需要放置30个webbrowser控件来模拟转发器,通过以下代码表示一些内容并重新运行程序:

    private void FormTest_Load(object sender, EventArgs e)
    {
        string html ="some words";

        WebBrowser wb;
        for (int i = 0; i < 30; i++)
        {
            wb = new WebBrowser();
            wb.Width = 240;
            wb.Height = 100;
            wb.Top = i * 100;
            wb.Left = 0;
            wb.DocumentText = html;
            this.Controls.Add(wb);
        }
    }

然后,内存使用量从25MB增长到31MB。 它只需2MB。也许这些2MB不被webbrowser消耗,因为那些30 webbrowser的html内容。

所以我的问题是,

1.在.NET世界中,它生成的多个控件UI实例仍然只花费一个实例资源吗?

2.在form_unload上处理这30个webbrowser控件的最佳方法是什么? 使用GC.Collect();?或.net CF会为我做的吗?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

  1. 应用程序本身也使用内存。因此,第一个WebBrowsers似乎与其他29个相比花费了很多。所以我个人觉得它没什么特别的。您可能需要考虑使用较少的WebBrowsers:)

  2. .NETCF有一个垃圾收集器,在您退出应用程序时将处置所有对象。请记住,在Windows Mobile上,应用程序也可以最小化。 WebBrowser控件还继承了IDisposable,因此包含Dispose方法。