如何在 .net 应用程序中显示实时内存使用情况
Posted
技术标签:
【中文标题】如何在 .net 应用程序中显示实时内存使用情况【英文标题】:how to show realtime memory usage in a .net app 【发布时间】:2011-07-31 14:32:29 【问题描述】:使用workingset64可以轻松获取当前进程的内存使用情况
但是我找不到任何像 OnMemUsageChanged 这样的事件,所以我可以显示一个小的内存使用表,它可以实时/实时显示内存使用值。可以每秒更新一次计时器,但看起来效率低下。
每次内存使用变化时,我是否可以得到一个事件或回调?谢谢
【问题讨论】:
除非您的应用程序非常静态,否则您将过于频繁地收到一个事件 - 每次您 new() 某事或某事超出范围时。 根据您和 Hans 的回复,我将在计时器中执行此操作。谢谢 【参考方案1】:不,将虚拟内存映射到 RAM 是非常低级的操作系统内核操作。它无法承担像运行用户级代码来生成通知那样昂贵的事情。更糟糕的是:确保此用户级代码也映射到 RAM 可能会首先撤消映射操作。只有轮询是一种选择。
您必须注意这样的内存统计信息。 WorkingSet 是一个相当随机的数字,它受机器上运行的other 代码的严重影响。当需要它们占用的 RAM 来运行其他代码时,程序的页面将被取消映射。简单地最小化应用程序的主窗口会产生影响,Windows 将其视为您暂时不会使用该程序的提示,并且它会积极修剪工作集大小以为您可能要使用的其他程序腾出空间下一个。
【讨论】:
以上是关于如何在 .net 应用程序中显示实时内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中调试时启用内存使用情况中的实时图表