如何找到 VC++/MFC-App 的内存消耗
How to find memory consumption of VC++/MFC-App
我正在这个环境中开发一个应用程序:Windows,本机,32 位,使用 Visual Studio C++ 和 MFC,几个 Com-Dll,ActiveX-Controls,库构建。
当我的应用程序是 运行 时,我在 Windows-Taskmanager 中看到它缓慢但不断地消耗内存(每分钟约 10Kb 或每 10 "working-cycles" 我的应用程序约 1K),我需要弄清楚这种消耗发生在哪里。
背景资料:
- 该应用程序有 2 种状态:空闲和工作中。内存消耗只发生在不断处理数据的工作状态
- 在工作状态下,没有用户输入或对应用程序的任何其他外部请求
- 我很确定动态分配的内存(新的,malloc)没有问题,因为我已经用像 MemPro 这样的工具检查过它(https://puredevsoftware.com/mempro)并且在结束程序时的调试器
- 所以我认为有一些 class 成员(列表、映射、数组等)正在增长(但不应该),或者内存消耗发生在外部组件中
所以我的问题是:
- 你知道任何可以跟踪内存使用情况的工具吗
- 我使用 Windows-Taskmanager 和 Sysinternals-Process-Explorer,但两者都以千字节为单位显示我的内存。是否有 way/tool 以字节为单位查看它以便我可以更快地看到更改?
- 如何在代码中获取我的应用程序的当前内存使用情况(我猜是一些 windows-Api-调用)以便我可以通过 Debug-Outputs[=28 解决问题=]
- 还有其他提示吗?
您可以随时使用 _CrtMemCheckpoint()
对您的内存进行快照,然后您可以使用 _CrtMemDifference()
比较两个快照。
详情请见https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2019。
我正在这个环境中开发一个应用程序:Windows,本机,32 位,使用 Visual Studio C++ 和 MFC,几个 Com-Dll,ActiveX-Controls,库构建。 当我的应用程序是 运行 时,我在 Windows-Taskmanager 中看到它缓慢但不断地消耗内存(每分钟约 10Kb 或每 10 "working-cycles" 我的应用程序约 1K),我需要弄清楚这种消耗发生在哪里。
背景资料:
- 该应用程序有 2 种状态:空闲和工作中。内存消耗只发生在不断处理数据的工作状态
- 在工作状态下,没有用户输入或对应用程序的任何其他外部请求
- 我很确定动态分配的内存(新的,malloc)没有问题,因为我已经用像 MemPro 这样的工具检查过它(https://puredevsoftware.com/mempro)并且在结束程序时的调试器
- 所以我认为有一些 class 成员(列表、映射、数组等)正在增长(但不应该),或者内存消耗发生在外部组件中
所以我的问题是:
- 你知道任何可以跟踪内存使用情况的工具吗
- 我使用 Windows-Taskmanager 和 Sysinternals-Process-Explorer,但两者都以千字节为单位显示我的内存。是否有 way/tool 以字节为单位查看它以便我可以更快地看到更改?
- 如何在代码中获取我的应用程序的当前内存使用情况(我猜是一些 windows-Api-调用)以便我可以通过 Debug-Outputs[=28 解决问题=]
- 还有其他提示吗?
您可以随时使用 _CrtMemCheckpoint()
对您的内存进行快照,然后您可以使用 _CrtMemDifference()
比较两个快照。
详情请见https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2019。