问题标签 [massif]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
77 浏览

profiling - massif 是否会使被测程序使用更多内存?

我有一个程序。当它正常运行时,我的硬编码峰值内存检查器报告 1G。当它与地块一起运行时,我的检查器报告 2.2G ......

我的峰值内存检查器不是智能检查器,我只在硬编码的地方调用它来获取当前的内存足迹。我想知道地块是否会导致程序使用更多内存。

0 投票
1 回答
150 浏览

profiling - massif 可以测量全局/静态数据成本吗?

我看到地块可以测量堆使用,也可以使用一些选项来测量堆栈使用。它是否还报告全局数据消耗(定义为全局或静态变量的数据)?

0 投票
1 回答
1069 浏览

c++ - 使用 valgrind 的 massif 测量 c++ 应用程序的最大内存使用量(堆栈和堆)

我目前正在 Ubuntu 16.04 虚拟机上开发 C++ 应用程序。我需要测量应用程序(堆栈和堆)的总内存使用量,以找出它的最大值范围。由于我对内存分析很陌生,所以我最终使用 valgrind 如下:命令:

在解码的文件中,我在相关图表上得到了 12.5 MB 的峰值。另一方面,gnome-system-monitor 显示 25 MB 作为最大内存值。

我应该相信这两个结果中的哪一个?是否也应该与其他软件交叉检查内存使用情况?

0 投票
2 回答
493 浏览

linux - massif 报告的堆使用量比 VmRss 少得多,这可能是什么问题?

地块输出:

进程在VmRss中显示1.2GB,那么巨大的差异来自哪里?(我看到 Rss 不断增长)。

0 投票
1 回答
386 浏览

valgrind - 可以增量转储日志

我使用命令

该命令仅生成一个 massif.out。关闭测试程序后的文件。有没有办法让地块在测试程序运行期间增量转储文件?

0 投票
1 回答
1394 浏览

memory - 检查 pmap 报告的虚拟内存块

我在我的程序中看到了泄漏。它不会被“valgrind memcheck”捕获(我用摘要报告确认了这一点,它没有接近我能看到的最高使用量)。使用“valgrind massif --pages-as-heap”时,我可以得到更接近我的内存使用情况。但是,它没有报告执行 mmap 并分配大部分内存的部分的完整 Traceback,我也无法检查内存分配,因为我只能在程序被杀死后收集地块输出。我尝试的另一件事是检查占用大量 RSS 空间的内存块。但是我不知道如何查看 pmap 报告的内存块的内容。将该地址放在 gdb dint 帮助上。我听说 gdb 使用了一些地址随机化。

0 投票
1 回答
2790 浏览

c++ - valgrind memcheck 在“rw-匿名段”中给出消息

我正在使用地块来调试长时间运行的二进制程序的堆增加问题。但它报告:

所以我尝试了 valgrind --tool=memcheck -v,它报告:

我不知道main下面的错误。

0 投票
0 回答
52 浏览

c++ - 分析模板化库 C++

我在我的main.cpp文件中包含一个巨大的模板库,我想对生成的程序进行堆分析。我正在使用massif它来ms_print进行可视化。用-pg.

在详细快照表中,我想查看代码的哪些部分分配的内存最多。问题是表中的信息总是只指main,没有行号,有时甚至是“???”。

我意识到所有模板都包含在 中main.cpp,即 main 实际上是从一个巨大的源文件编译而来的,没有机会区分.tcc调用来自哪个文件的哪一行。

是否有解决此问题的方法或更好的方法?

谢谢。

0 投票
0 回答
286 浏览

c++ - HDF5(C 接口)通过重复调用 H5Oget_info_by_name 消耗所有 RAM

我从 C++ 中的 HDF5 代码中看到了奇怪的行为(使用 C 接口)。它最大化了我系统上的 RAM 使用量,但似乎继续运行良好。我不确定它停止分配更多 RAM 的点是否是巧合,或者是否预期某些缓冲区或某些缓冲区的内部行为会这样做。无论如何,问题是如果其他一些应用程序想要使用一些 RAM,那么它就不能,整个系统开始颠簸并锁定。

我运行代码valgrind --tool=massifmassif-visualizer尝试查看发生了什么,并得到以下输出:

massif-visualizer_output

查看典型快照中的调用链(显示在图像中),看起来它发生在我的一个函数中,当我遍历 HDF5 文件中的一个组以识别它的所有数据集时,它op_func被重复调用H5Literate包含。

但是这个函数甚至没有读取或写入任何重要的数据!它所做的只是H5Oget_info_by_name重复调用以查询数据集名称!所以我不明白为什么这会消耗我所有的 RAM。如果我在做一些愚蠢的事情,这里是重复调用的函数的代码:

如您所见,它非常简单,我只是收集名称并将它们推送到字符串向量上。它可能会使用一些更好的错误检查,但除了这个 RAM 问题之外,它似乎工作得很好。

我在做一些愚蠢的事情来导致内存泄漏吗?还是 HDF5 在其内部缓冲方面真的很激进,并且缓冲的信息比我意识到的要多?也许我只需要告诉它清除一些缓冲区或进行垃圾收集或其他什么?

0 投票
1 回答
1820 浏览

cmake - 构建massif-visualizer:包含找不到加载文件CMakeFindDependencyMacro

我正在尝试在 CentOS 7 上构建massif-visualizer。不幸的是,我不得不尝试猜测依赖项,因为它们并未全部列在INSTALL文件中。至今:

那些 Qt5 和 KF5 包主要通过反复试验添加到yum命令中,以及来自 CMake 错误消息的一些模式匹配......但我似乎无法弄清楚如何解决这些最后的错误:

这是因为在 CentOS 7 上,CMake (2.8.12.2) 太旧了吗?或者是其他东西?