在我的机器(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