如何在ASP.NET中编写内存使用情况日志

时间:2010-11-10 11:39:09

标签: c# asp.net

我们在生产服务器上出现“内存不足”问题。我们可以使用什么API来获取ASP.NET应用程序的实时内存(物理和托管)?

感谢。

PS:我们禁止用工具分析内存。

4 个答案:

答案 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会告诉您如果您有兴趣这样做。

但......在你做任何真正的练习之前......你绝对必须做的两件事。

  1. 在所有web.config文件中调整Debug = False http://aspalliance.com/1341

  2. 在所有web.config文件中使用Trace = False,因为跟踪数据会在内存中保留,并会加剧内存不足。

答案 3 :(得分:1)

除了性能计数器之外,您还可以使用Visual Studio附带的分析工具来监视内存使用情况。此步骤可以帮助您在将代码发布到生产之前识别内存问题。以下是使用VS2010的方法:http://msdn.microsoft.com/en-us/library/dd264934.aspx