C++ 如何分析内存使用情况?
我知道Valgrind,但它只是检测内存管理问题。我正在搜索的是一个工具,它可以给我一个概览,我的程序的哪些部分消耗了多少内存。使用树图等图形表示(就像KCachegrind对Callgrind所做的那样)会很酷 我在Linux机器上工作,所以windows工具对我帮助不大。使用,这是Valgrind工具的一部分。可以帮助您绘制数据图表,也可以使用C++ 如何分析内存使用情况?,c++,linux,memory,profiler,valgrind,C++,Linux,Memory,Profiler,Valgrind,我知道Valgrind,但它只是检测内存管理问题。我正在搜索的是一个工具,它可以给我一个概览,我的程序的哪些部分消耗了多少内存。使用树图等图形表示(就像KCachegrind对Callgrind所做的那样)会很酷 我在Linux机器上工作,所以windows工具对我帮助不大。使用,这是Valgrind工具的一部分。可以帮助您绘制数据图表,也可以使用ms\u print命令。试试谷歌提供的。我总是从源代码构建它,但它在几个Linux发行版下都是可用的 它的使用就像将动态库链接到可执行文件并运行程序
ms\u print
命令。试试谷歌提供的。我总是从源代码构建它,但它在几个Linux发行版下都是可用的
它的使用就像将动态库链接到可执行文件并运行程序一样简单。它收集有关每个动态内存分配的信息(据我所知),并在每次发生以下情况时将内存转储保存到磁盘:
程序已分配字节(默认值:1Gb)HEAP\u PROFILE\u ALLOCATION\u INTERVAL
- 高位内存使用标记增加
字节(默认值:100Mb)HEAP\u PROFILE\u INUSE\u INTERVAL
已过秒(默认值:非活动)HEAP\u PROFILE\u TIME\u INTERVAL
- 从代码中显式调用
HeapProfilerDump()
malloc
/free
版本,用于存储所有调用并转储日志
GUI很好(但需要Qt5 IIRC),结果计时(因为您可能也想跟踪时间)比valgrind的偏差更小(因为它们不是模拟的)。将callgrind选项与valgrind一起使用谢谢,屏幕截图看起来非常棒。。。,我想这是我一直想要的。在CentOS 7上构建massif visualizer有点痛苦,但它是值得的。据我所知,我认为这个答案也应该注意(如果应用程序是静态链接的,“Valgrind”系列工具将不起作用):也可以作为dpkg:sudo apt install massif Visualizer提供。这似乎不支持MPI程序。您好,callgrind是一个不错的工具,但它应该用于其他目的。可能您指的是massif()?