在我的機器(XP,64)上,ASP.net工作進程(w3wp.exe)始終啓動,保留5.5GB的虛擬內存。無論其託管的Web應用程序如何(它可以是任何東西,甚至是aspx中的空白網頁)。確定在w3wp.exe中保留了誰/保留了5.5 GB的虛擬內存
這個虛擬內存的大塊在進程啓動時被保留下來,所以這不是某種緩存「泄漏」。
有些使用windbg進行窺探表明內存問題是Private,Reserved和RegionUsageIsVAD,這表明它可能是某人調用VirtualAlloc的工作。它還表明,所討論的內存分配/保留在每個1GB的4個大塊和幾個較小的塊(每個1/4GB)中。
所以我想我需要找出誰在調用VirtualAlloc並保留所有這些內存。我怎麼做?
因爲w3wp.exe是由svchost.exe啓動的進程(即IIS/ASP.Net過濾器),並且如果我嘗試自行啓動它,因此在內存分配之前將調試程序附加到進程上是非常棘手的爲了調試它,它只是關閉而沒有所有這些大量的內存預留。另外,如果我重新使用命令行參數(這很有意義,因爲它是由調用進程創建的管道),所以命令行參數無效。
我可以在事實之後(這是我如何找到有問題的內存區域)將windbg附加到進程中,但我不確定在那一點可能確定誰分配了哪些內容。
我只想說「哦,我的上帝」 GeorgeTakei>! –
StingyJack
2008-12-10 13:09:38
這是我見過的新標記的第一個相關用法(當然,除了NBC.com上的英雄頁面之外)! –
2008-12-10 13:21:34
我在服務器2008,IIS7 – 2009-12-21 19:35:31