为什么这一小段代码消耗了97868k的内存

本文关键字:97868k 内存 小段 代码 为什么 | 更新日期: 2023-09-27 18:21:35

我有一小段代码,我不明白为什么要占用这么多内存。

    static void Main(string[] args)
    {
        using (SPSite mySite = new SPSite("http://consotvo.internal.com/upi"))
        {
            using (SPWeb web = mySite.OpenWeb())
            {
                //foreach (SPFile file in web.Files[0])
                //    Console.WriteLine(file.Name);
                SPFile file = web.Files[0];
                using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
                {
                    foreach (System.Web.UI.WebControls.WebParts.WebPart wb in manager.WebParts)
                    {
                        Console.WriteLine(wb.Title);

                        //wb.Dispose();
                        //manager.Web.Dispose();
                    }
                }
            }
        }
    }

这段代码消耗了97868k,即使在代码已经执行之后,即使我还没有关闭控制台窗口。我的问题是,我想打开3000个网站(不同的url),并对Web部件进行更改,但消耗了太多内存

更新

using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))

仅此一行就增加了40000 k

为什么这一小段代码消耗了97868k的内存

看起来你正在打开与网站的连接,然后它会拉下页面的源,所有这些源都需要存储在某个地方,所以除非你将其分块到文本文件或数据库中,否则它将需要消耗与服务器发送回的内存一样多的内存。