【发布时间】:2009-09-03 23:38:26
【问题描述】:
我的应用程序 (DotNET) 在 C++ 独立应用程序中作为插件运行,该应用程序公开了 C++/CLI SDK。
我的用户很容易生成大量数据,如果我的插件 + 基础应用程序的内存消耗达到法定最大值的 90%,我想提供一个中止选项。
我如何测量总内存消耗(对于托管的和非托管代码都是理想的)以及我如何知道当前应用程序允许多少内存窗口?
【问题讨论】:
我的应用程序 (DotNET) 在 C++ 独立应用程序中作为插件运行,该应用程序公开了 C++/CLI SDK。
我的用户很容易生成大量数据,如果我的插件 + 基础应用程序的内存消耗达到法定最大值的 90%,我想提供一个中止选项。
我如何测量总内存消耗(对于托管的和非托管代码都是理想的)以及我如何知道当前应用程序允许多少内存窗口?
【问题讨论】:
Process 类提供了大部分此类信息。我想你追求的是Process.PrivateMemorySize64。
你应该可以做到:
var memoryUsage = Process.GetCurrentProcess().PrivateMemorySize64;
【讨论】:
GetProcessMemoryInfo 并检查PROCESS_MEMORY_COUNTERS_EX 中的PrivateUsage。
更新
显然我误解了这个问题,尽管您希望从应用程序的 CLI SDK 端获得价值。在托管方面,您已经得到了正确的答案。
【讨论】:
我推荐一个分析工具:dotTrace 效果很好。
【讨论】: