我正在寻找应用程序本身监视其使用的内存量的方法,因此我可以每小时左右将其记录在日志文件中,并密切关注应用程序的使用情况。
它全部托管,因此我们可以对系统进行更改以查看正在发生的事情,因此解决方案必须来自应用程序代码。
我们将来可能会使用内存信息来影响缓存策略。
答案 0 :(得分:5)
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类读取性能计数器。以下是您可以插入的一些计数器:
请求字节总计
总共请求字节数
请求等待时间
请求执行
请求/秒
错误总数