0

我的应用程序有 10 个锯齿状数组和 5 个列表。平均数据填充了不同的数据,例如双精度或字符串类型。所以我知道我的应用程序必须消耗大量内存,但我如何确定正在使用的内存总量?

我已经阅读过使用,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找出我的应用程序使用的内存总量的最佳选择吗?

4

3 回答 3

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)));
    }
}
于 2012-10-09T19:36:29.550 回答
0

您可以执行以下操作:

using System.Diagnostics;

...
    Process.GetCurrentProcess().VirtualMemorySize64

这将为您提供您将在任务管理器等位置看到的数字。但是,这包括非托管开销内存使用。System.GC.GetTotalMemory(true)将为您提供垃圾收集器使用的实际内存量(.net 内存使用情况)。

于 2012-10-09T19:24:09.970 回答
0

这是您也可以使用的链接How to do (Almost) Everything in WMI

也看看这个 StackOverFlow 帖子.. 有很多选项 WMI 非常强大 How to Get CPU Usage

如果 WMI 不是您正在寻找和或想要使用的......那么看看性能计数器这里是一个如何使用它们的示例以及性能计数器简介

于 2012-10-09T19:37:34.660 回答