从应用程序内监视ASP.NET应用程序内存

时间:2009-02-25 15:45:06

标签: asp.net memory

我正在寻找应用程序本身监视其使用的内存量的方法,因此我可以每小时左右将其记录在日志文件中,并密切关注应用程序的使用情况。

它全部托管,因此我们可以对系统进行更改以查看正在发生的事情,因此解决方案必须来自应用程序代码。

我们将来可能会使用内存信息来影响缓存策略。

2 个答案:

答案 0 :(得分:5)

嗯,你需要多详细的信息?如果您只想使用内存,可以询问GC。它知道。 ;)

long bytes = GC.GetTotalMemory(false); // use 'false' to not wait for next collect

变量'bytes'将包含当前在托管内存中分配的字节数。我不确定托管内存是需要整个进程还是只需要AppDomain。您必须通过在一个进程中运行多个AppDomain来测试这一点,并查看是否通过AppDomains测量了托管内存分配。如果他们不这样做,那么您可以使用它来测量ASP.NET应用程序中的总内存使用量。

如果您需要更具体的信息,可以使用CLR的诊断API,您可以与其进行交互。还有很多内存分析器,但是如果它们在ASP.NET应用程序中工作我就不能说了。

答案 1 :(得分:1)

作为替代方案,如果您需要更详细的信息,可以使用System.Diagnostics.PerformanceCounter类读取性能计数器。以下是您可以插入的一些计数器:

请求字节总计

总共请求字节数

请求等待时间

请求执行

请求/秒

错误总数