- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想查看命令
的内存使用峰值。我有一个参数化算法,我想知道程序何时会因我的机器(12GB RAM)内存不足错误而崩溃。
我试过:
/usr/bin/time -f "%M" command
valgrind --tool=massif command
第一个给了我 1414168
(1.4GB;谢谢 ks1322 指出它以 KB 为单位!)然后 valgrind 给了我
$ ms_print massif.out
--------------------------------------------------------------------------------
n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
75 26,935,731,596 22,420,728 21,956,875 463,853 0
我有点不知道应该取哪个数字,但我们假设“总计”(22MB)。
massif-visualizer
向我显示
现在我对同一个命令有 3 个不同的数字:
valgrind --tool=massif 命令
+ ms_print
:22MBvalgrind --tool=massif command
+ massif-visualizer
:206MB(这是我在 htop
中看到的,我想这是我感兴趣的)time -f "%M"命令
:1.4GB我应该看哪个数字?为什么数字完全不同?
最佳答案
/usr/bin/time -f "%M"
测量最大 RSS(驻留集大小),即 RAM 中进程使用的内存,未换出。该内存包括堆、栈、数据段等。
这测量了子进程(包括孙子进程)的最大 RSS(不是子进程 RSS 总和的最大值)。
valgrind --tool=massif
,如文档所述:
measures only heap memory, i.e. memory allocated with malloc, calloc, realloc, memalign, new, new[], and a few other, similar functions. This means it does not directly measure memory allocated with lower-level system calls such as mmap, mremap, and brk
这只测量 child (不是孙子)的内存。这不会测量堆栈,也不会测量文本和数据段。
(选项如 --pages-as-heap=yes
和 --stacks=yes
可以测量更多)
因此在您的情况下,差异是:
time
考虑了孙子,而 valgrind
没有time
不测量换出的内存,而 valgrind
测量time
测量堆栈和数据段,而 valgrind
不测量你现在应该:
valgrind --tool=massif --stacks=yes
进行分析以检查堆栈valgrind --tool=massif --pages-as-heap=yes
进行分析以检查剩余的内存使用情况关于memory - 'time -f "%M "' and ' valgrind --tool=massif' 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57973895/
我正在使用带有 Massif 工具的 Valgrind 3.3.1 来分析 C++ 应用程序的堆,我想知道是否有一个图形工具可以检查文本输出文件。 感谢任何建议。 最佳答案 对于仍然对 Valgrin
我正在开发一个多线程应用程序,它似乎在运行期间分配了大量内存。所有内存在执行结束时都被释放,因此 valgrind 没有显示内存泄漏。我试图使用 massif 工具找出发生了什么,但 ms_print
我想,对于任何进行性能研究的人来说,这是一个非常常见的场景。假设有一些数据结构,并且想评估它们的空间性能——不计使用例如sizeof而是以经验的方式。我在 MWE 中对这种情况建模如下: 有一个STL
我在 Valgrind 中使用 massif 工具。我需要跟踪子进程的堆内存。我找不到任何命令来获取子进程的堆内存。我的应用程序是一个恶魔服务器。 在 memcheck 工具中,我可以使用 获取子进程
我有一个程序意外使用了大量堆(大约 3GB)。我通过 valgrind memcheck 运行它,报告没有泄漏,声称所有堆内存仍然可以访问。 所以我用调试选项重建了我的所有库,并通过 valgrind
我正在使用 valgrind 检查我的程序是否在类所需的内存范围内。当我运行 massif 时,我得到一个漂亮的图表,上面显示我的最大内存使用量(堆+堆栈)是 21 KB。当我运行 valgrind
所以,我知道:null、""、undefined,0, NaN 将返回 false并且 JS 中的所有其他值都将为 true,但为什么: console.log([] - 1) //
我正在尝试为一个消耗过多内存并被 OS (FreeBSD) 以 9 信号杀死的程序进行内存分析。这种情况发生在某些特定数据上,因此在另一个(例如较小的)数据集上对其进行分析不会有太大帮助。当程序被终止
我尝试使用以下选项在 Ubuntu 14.04 中运行 Valgrind: valgrind --tool=massif --pages-as-heap=yes 但出现以下错误: valgrind:
地 block 输出: time=3220706 mem_heap_B=393242041 mem_heap_extra_B=73912175 mem_stacks_B=93616 heap_tree
在 LINUX 中使用 Valgrind Massif 时,我试图实时查看 massif.out.pid 文件,但它会在 Massif 完成执行后生成该文件。我想在代码中放置断点以观察某些指令对堆的影
在版本为 valgrind-3.13.0 的 MacOS (10.12.6) 上运行 valgrind --tool=massif benchmark1 --massif-out-file=test.
我有一个内部 C++ 应用程序,它会无限增长——增长如此之大,以至于我们不得不实现逻辑,一旦 RSS 达到某个峰值大小 (2.0G),我们就不得不执行实际终止它的逻辑,只是为了保持某种秩序。但是,这显
我正在尝试了解我的应用程序是否存在泄漏。 在运行我的应用程序时,我定期运行 pmap 并观察: mapped: 488256K writeable/private: 90144K shar
我想在 linux ubuntu 中测量一个程序的内存消耗。我比较了两个工具:Valgrind Massif 和 TOP。出于某种原因,即使我使用“--pages-as-heap=yes”来显示所有内
我目前正在 Ubuntu 16.04 虚拟机上开发 C++ 应用程序。我需要测量应用程序(堆栈和堆)的总内存使用情况,以找出其最大值范围。由于我在内存分析方面还很陌生,所以我最终按如下方式使用了 va
考虑这个使用 mysql crate 版本 12.3.1 的小程序: extern crate mysql; fn main() { mysql::Pool::new("mysql://use
我正在尝试测量我正在编写的 Rust 程序的内存大小。我注意到当我使用以下命令测量堆大小时: valgrind --tool=massif --pages-as-heap=yes ./program
所以我试图在 Ubuntu 18 中查看我的 c++ 程序的堆内存使用情况 我使用以下方法运行它: valgrind --tool=massif --smc-check=all ./myprogram
我想查看命令 的内存使用峰值。我有一个参数化算法,我想知道程序何时会因我的机器(12GB RAM)内存不足错误而崩溃。 我试过: /usr/bin/time -f "%M" command valgr
我是一名优秀的程序员,十分优秀!