我的应用程序有10个锯齿状数组和5个列表。平均值填充不同的数据,例如double或string类型。所以我知道我的应用程序必须占用大量内存但是如何确定正在使用的内存总量?
我已阅读使用GC.GetTotalMemory
所以我做的第一件事是这样的:
var initialMemory = System.GC.GetTotalMemory(true);
many line of code
...
..
var finalMemory = System.GC.GetTotalMemory(true);
var consumption = finalMemory - initialMemory;
所有代码都在main()
调用其函数的函数内,但最终结果为零。我看到finalMemory
也是零,所以首先是怎么回事?初始内存有一个数字,但最终没有。
System.GC.GetTotalMemory
是查找我的应用程序使用的内存总量的最佳选择吗?
答案 0 :(得分:1)
我曾经使用过:
在我的global.asax文件中:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (WebConfigSettings.ShowMemoryUsage)
{
GC.Collect();
logger.Debug(string.Format("Total memory: {0:###,###,###,##0} bytes", GC.GetTotalMemory(true)));
}
}
答案 1 :(得分:0)
您可以执行以下操作:
using System.Diagnostics;
...
Process.GetCurrentProcess().VirtualMemorySize64
这将为您提供在任务管理器等地方看到的号码。但是,这包括非托管开销内存使用情况。 System.GC.GetTotalMemory(true)
将为您提供垃圾收集器使用的实际内存量(.net内存使用情况)。
答案 2 :(得分:0)
以下是您可以使用的链接How to do (Almost) Everything in WMI
请看这个StackOverFlow帖子。有很多选项WMI非常强大 How to Get CPU Usage
如果WMI不是您正在寻找和/或想要使用的......那么请查看性能计数器 这里有一个如何使用它们的例子Introduction to Performance Counters