0

我有一小段代码,我不明白为什么它会占用大量内存。

    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();
                    }

                }
            }
        }
    }

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

更新

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

仅这条线就增加了 40,000 k

4

1 回答 1

2

看起来您正在打开与该站点的连接,然后它会拉下页面的源代码,并且所有该源代码都需要存储在某个地方,因此除非您将其分块为文本文件或它将需要的数据库消耗与服务器发回一样多的内存。

于 2013-07-08T14:46:39.783 回答