问题标签 [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.
profiling - massif 是否会使被测程序使用更多内存?
我有一个程序。当它正常运行时,我的硬编码峰值内存检查器报告 1G。当它与地块一起运行时,我的检查器报告 2.2G ......
我的峰值内存检查器不是智能检查器,我只在硬编码的地方调用它来获取当前的内存足迹。我想知道地块是否会导致程序使用更多内存。
profiling - massif 可以测量全局/静态数据成本吗?
我看到地块可以测量堆使用,也可以使用一些选项来测量堆栈使用。它是否还报告全局数据消耗(定义为全局或静态变量的数据)?
c++ - 使用 valgrind 的 massif 测量 c++ 应用程序的最大内存使用量(堆栈和堆)
我目前正在 Ubuntu 16.04 虚拟机上开发 C++ 应用程序。我需要测量应用程序(堆栈和堆)的总内存使用量,以找出它的最大值范围。由于我对内存分析很陌生,所以我最终使用 valgrind 如下:命令:
在解码的文件中,我在相关图表上得到了 12.5 MB 的峰值。另一方面,gnome-system-monitor 显示 25 MB 作为最大内存值。
我应该相信这两个结果中的哪一个?是否也应该与其他软件交叉检查内存使用情况?
linux - massif 报告的堆使用量比 VmRss 少得多,这可能是什么问题?
地块输出:
进程在VmRss中显示1.2GB,那么巨大的差异来自哪里?(我看到 Rss 不断增长)。
valgrind - 可以增量转储日志
我使用命令
该命令仅生成一个 massif.out。关闭测试程序后的文件。有没有办法让地块在测试程序运行期间增量转储文件?
memory - 检查 pmap 报告的虚拟内存块
我在我的程序中看到了泄漏。它不会被“valgrind memcheck”捕获(我用摘要报告确认了这一点,它没有接近我能看到的最高使用量)。使用“valgrind massif --pages-as-heap”时,我可以得到更接近我的内存使用情况。但是,它没有报告执行 mmap 并分配大部分内存的部分的完整 Traceback,我也无法检查内存分配,因为我只能在程序被杀死后收集地块输出。我尝试的另一件事是检查占用大量 RSS 空间的内存块。但是我不知道如何查看 pmap 报告的内存块的内容。将该地址放在 gdb dint 帮助上。我听说 gdb 使用了一些地址随机化。
c++ - valgrind memcheck 在“rw-匿名段”中给出消息
我正在使用地块来调试长时间运行的二进制程序的堆增加问题。但它报告:
所以我尝试了 valgrind --tool=memcheck -v,它报告:
我不知道main下面的错误。
c++ - 分析模板化库 C++
我在我的main.cpp
文件中包含一个巨大的模板库,我想对生成的程序进行堆分析。我正在使用massif
它来ms_print
进行可视化。用-pg
.
在详细快照表中,我想查看代码的哪些部分分配的内存最多。问题是表中的信息总是只指main
,没有行号,有时甚至是“???”。
我意识到所有模板都包含在 中main.cpp
,即 main 实际上是从一个巨大的源文件编译而来的,没有机会区分.tcc
调用来自哪个文件的哪一行。
是否有解决此问题的方法或更好的方法?
谢谢。
c++ - HDF5(C 接口)通过重复调用 H5Oget_info_by_name 消耗所有 RAM
我从 C++ 中的 HDF5 代码中看到了奇怪的行为(使用 C 接口)。它最大化了我系统上的 RAM 使用量,但似乎继续运行良好。我不确定它停止分配更多 RAM 的点是否是巧合,或者是否预期某些缓冲区或某些缓冲区的内部行为会这样做。无论如何,问题是如果其他一些应用程序想要使用一些 RAM,那么它就不能,整个系统开始颠簸并锁定。
我运行代码valgrind --tool=massif
并massif-visualizer
尝试查看发生了什么,并得到以下输出:
查看典型快照中的调用链(显示在图像中),看起来它发生在我的一个函数中,当我遍历 HDF5 文件中的一个组以识别它的所有数据集时,它op_func
被重复调用H5Literate
包含。
但是这个函数甚至没有读取或写入任何重要的数据!它所做的只是H5Oget_info_by_name
重复调用以查询数据集名称!所以我不明白为什么这会消耗我所有的 RAM。如果我在做一些愚蠢的事情,这里是重复调用的函数的代码:
如您所见,它非常简单,我只是收集名称并将它们推送到字符串向量上。它可能会使用一些更好的错误检查,但除了这个 RAM 问题之外,它似乎工作得很好。
我在做一些愚蠢的事情来导致内存泄漏吗?还是 HDF5 在其内部缓冲方面真的很激进,并且缓冲的信息比我意识到的要多?也许我只需要告诉它清除一些缓冲区或进行垃圾收集或其他什么?
cmake - 构建massif-visualizer:包含找不到加载文件CMakeFindDependencyMacro
我正在尝试在 CentOS 7 上构建massif-visualizer。不幸的是,我不得不尝试猜测依赖项,因为它们并未全部列在INSTALL
文件中。至今:
那些 Qt5 和 KF5 包主要通过反复试验添加到yum
命令中,以及来自 CMake 错误消息的一些模式匹配......但我似乎无法弄清楚如何解决这些最后的错误:
这是因为在 CentOS 7 上,CMake (2.8.12.2) 太旧了吗?或者是其他东西?