【问题标题】:Memory usage of DotNET appDotNET 应用程序的内存使用情况
【发布时间】:2009-09-03 23:38:26
【问题描述】:

我的应用程序 (DotNET) 在 C++ 独立应用程序中作为插件运行,该应用程序公开了 C++/CLI SDK。

我的用户很容易生成大量数据,如果我的插件 + 基础应用程序的内存消耗达到法定最大值的 90%,我想提供一个中止选项。

我如何测量总内存消耗(对于托管的非托管代码都是理想的)以及我如何知道当前应用程序允许多少内存窗口?

【问题讨论】:

    标签: memory unmanaged managed


    【解决方案1】:

    Process 类提供了大部分此类信息。我想你追求的是Process.PrivateMemorySize64

    你应该可以做到:

    var memoryUsage = Process.GetCurrentProcess().PrivateMemorySize64;
    

    【讨论】:

    • 是的!就是这样!我已经担心我必须通过 PInvoke 才能做到这一点。
    • Process 类有很多像这样的好指标 - 看看文档,你会看到很多。
    【解决方案2】:

    GetProcessMemoryInfo 并检查PROCESS_MEMORY_COUNTERS_EX 中的PrivateUsage

    更新

    显然我误解了这个问题,尽管您希望从应用程序的 CLI SDK 端获得价值。在托管方面,您已经得到了正确的答案。

    【讨论】:

    • 谢谢。非常感谢。
    【解决方案3】:

    我推荐一个分析工具:dotTrace 效果很好。

    【讨论】:

    • 我需要一种方法让我的应用程序知道它在运行时使用了多少内存。我不是在寻找分析应用程序。本质上,我想要的是进程资源管理器/任务管理器中可见的进程使用的私有字节数。
    猜你喜欢
    • 2011-03-09
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2014-11-08
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多