如何在 Windows 平台上测量应用程序的运行时内存需求?
Posted
技术标签:
【中文标题】如何在 Windows 平台上测量应用程序的运行时内存需求?【英文标题】:How can I measure runtime memory requirements of an application on windows platform? 【发布时间】:2008-12-13 05:20:12 【问题描述】:【问题讨论】:
【参考方案1】:Perfmon.exe 将监控进程的使用情况。
运行 perfmon.exe,右键单击 Add counters,为 Performance Object 选择 Process,然后选择 Virtual Bytes、Working Set 和 Page File。
【讨论】:
【参考方案2】:我假设您指的是特定时间点的内存使用量,而不是它可能需要的内存量。
您可以通过 Windows API 获取有关进程消耗量的信息,例如 GetProcessMemoryInfo。 Windows 以块为单位分配内存,因此它可能比仅检查使用了多少内存或堆空间更准确。
See more details from MSDN
【讨论】:
【参考方案3】:首先,“内存要求”没有很好的定义。当您开始时,您的可执行文件将链接到许多 DLL。与第一个堆栈一起,这构成了您的初始过程。然后,您的进程可能会启动额外的线程、分配更多内存和/或内存映射某些文件。
现在 Wwindows 不会为您提供真正的 RAM 来满足所有这些需求。由于其他原因,许多 DLL 已被加载,因此您将共享该 RAM。当您获得软堆栈溢出时,会为堆栈分配额外的 RAM。当这些页面出现错误时,内存映射文件会分配 RAM。
因此,重要的问题之一是您真正想要什么。你必须先回答这个问题。
【讨论】:
以上是关于如何在 Windows 平台上测量应用程序的运行时内存需求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux/Windows 上测量 CPU 时间和挂钟时间?
.NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6