我们在生产服务器上出现“内存不足”问题。我们可以使用什么API来获取ASP.NET应用程序的实时内存(物理和托管)?
感谢。
PS:我们禁止用工具分析内存。
答案 0 :(得分:3)
内存不足并不一定意味着你的想法。由于过多的对象创建导致的大量内存碎片可以报告为内存不足,因为GC无法找到足够大的连续内存块以供下次(或最后尝试)分配。
答案 1 :(得分:2)
.Net性能计数器可以帮助您处理大量与托管内存相关的统计信息。
此页面详细介绍了一些可用的内容 - http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx
您可以使用普通的Windows内存计数器来概述非托管内存 - http://msdn.microsoft.com/en-us/library/aa965225(VS.85).aspx
答案 2 :(得分:1)
嗯,我建议你做的第一件事就是在你的w3wp.exe使用率很高时进行内存转储。您应该自己进行这些转储并进行分析,或者让专家来完成。
http://blogs.msdn.com/tess会告诉您如果您有兴趣这样做。
但......在你做任何真正的练习之前......你绝对必须做的两件事。
在所有web.config文件中调整Debug = False http://aspalliance.com/1341
在所有web.config文件中使用Trace = False,因为跟踪数据会在内存中保留,并会加剧内存不足。
答案 3 :(得分:1)
除了性能计数器之外,您还可以使用Visual Studio附带的分析工具来监视内存使用情况。此步骤可以帮助您在将代码发布到生产之前识别内存问题。以下是使用VS2010的方法:http://msdn.microsoft.com/en-us/library/dd264934.aspx