问题标签 [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.
c++ - localtime_r 在程序退出前消耗一些内存
我使用 valgrind 的地块跟踪程序退出前最后阶段的内存使用情况并发现
- js::DateTimeInfo::updateTimeZoneAdjustment() (DateTime.cpp:19)
这是调用 localtime_r 并消耗一些内存。
valgrind 地块的最后一个快照的 ms_print
在我的程序退出之前有没有办法释放它?(据我了解,程序退出时它将被清除)
linux - 比较 valgrind、massif、top 和 pmap
我试图了解我的应用程序是否泄漏。
运行我的应用程序时,我会定期运行pmap
并观察:
我跑着top
观察:
“RES”和“可写/私有”的增加是让我怀疑泄漏的原因。但是,运行时valgrind
我没有检测到任何重大泄漏,并且当我中止执行时,我始终看到大约 20Mb 的可访问内存:
我跑了valgrind --tool=massif
,也看到了 20Mb:
问题:有人能解释一下为什么 valgrind 和 massif 告诉我我的程序一直使用 20Mb 内存,但是 top 和 pmap 告诉我使用量正在增长吗?
c++ - std::deque 的内存使用情况
我正在尝试std::deque
查找deque
.
写在简单的 C++ 程序下面,它创建一个deque
容器并推送int
元素的数量。
我想至少遍历容器一次,因此使用 find 算法。
我的主要重点是了解元素数量增加时内存使用量和内存使用量的增长情况。
我尝试使用两种不同的工具进行分析 valgrind massif 和 /usr/bin/time 使用命令行参数 1、2、3、4 运行程序并捕获如下内存
根据 valgrind,对于每 1K 元素,大约增加 4K 字节。但 top 或 /usr/bin/time 记录显示,对于每 1K 元素,RSS 会增加 16 千字节或 32 千字节。STL 容器元素默认分配在堆上,因此我希望 valgrind massif 报告的堆大小增长应该与元素数量增加时 top 或 /usr/bin/time 报告的 RSS 增长相匹配。当唯一的 4 KB 额外堆增加时,为什么 RSS 会增长 16 千字节或 32 千字节?除了堆分配之外,是什么导致 RSS 的增加?这里的堆栈是相同的,因为相同的程序使用不同的命令行参数 1、2、3、4 运行。
c++11 - 使用 valgrind massif 工具,未创建结果文件
我一直在关注本教程以供参考:http: //valgrind.org/docs/manual/ms-manual.html
当我使用它来分析我的应用程序时,使用命令: valgrind --tool=massif --time-unit=B ./run.o 它完成但不产生任何输出文件。这是使用上述命令运行时的日志。
https://www.dropbox.com/s/yae78rm9wmdbph1/ValGring_massif_Log?dl=0
请提出为什么它不会产生 massif.out.xxxxx 文件?
c++ - Valgrind Massif 工具力快照
我希望在我的代码中添加一些内容,以便我可以在其执行的某些点强制执行 Massif 快照,例如在服务器中将 Massif 快照转储到请求之间的文件中,以查看我是否持有大量内存请求之间。我无法找到一种方法,无论是宏还是库调用来强制它在那时转储快照,是否有办法做到这一点?
谢谢
c++ - 释放后似乎没有被较低级别的分配例程释放的内存
我正在调试一个复杂的 C++ 应用程序,数万行,许多嵌套对象(我这么说是因为它可能是相关的内存碎片),它也是 OMP/MPI 并行化的(尽管在这里运行单个节点)。
基本循环遍历问题的块,在每个块它循环所有相关对象并做一些事情。这些对象通过可变成员在内部缓存中间结果。最后调用 deCache 例程,所有这些中间结果都应该被清除,然后我们进入下一个块。问题是在这一步似乎没有释放内存,并且程序在几个块后耗尽了内存。
我通过调试器运行 valgrind 并在块处理结束时发出详细的 snapshop,就在 decaching 之前和 decaching 之后。这显示了堆上的内存消耗从 23Gb 到 820Mb,正如预期的那样:
也下降
这些数字正好在我的预期之内。问题是顶部显示的内存几乎没有减少(实际上它会在一段时间后耗尽内存)。使用 --stacks-as-heap 运行 massif,它确实表明内存实际上没有释放:
几乎没有改变
我很确定我们正确地解除了所有向量的分配(通过空向量交换)并且没有经典的内存泄漏(即非常一致地使用自动指针等),此外我希望这些会在 vanilla 下显示(即不是页面堆)运行。
知道会发生什么吗?什么样的错误只在 pages-as-heap 运行中显示?有没有可能是内存碎片问题?如何解决这个问题?
c - 无法使用“page-as-heap”选项运行 valgrind massif
我正在尝试使用以下选项在 Ubuntu 14.04 中运行 Valgrind:
但是得到以下错误:
这个选项在几个地方都有描述(实际上在 valgrind 的手册http://valgrind.org/docs/manual/ms-manual.html中提到)与地块一起使用。
我怎样才能让这个工具/选项可用?
谢谢
valgrind - 监控超过 1 小时的内存消耗
我正在尝试使用 Valgrind 的地块长时间监视进程的内存消耗。该进程处于活动状态并在特定时间间隔执行一些例行操作,我想查看所有进程的内存消耗。
我启动这个过程:
我的程序正在创建一个守护进程。
我看到地块为主要进程创建了一个文件,该文件几乎立即退出,而另一个仍然存在。当我终止守护进程时,massif 会输出另一个带有守护进程 pid 的文件。但是,我注意到只有让进程运行不超过 15 分钟左右,我才会获得第二个文件。如果我让它运行更多,则不会生成任何文件。Valgrind 没有显示错误。
我怀疑 valgrind 无法处理如此大量的信息,对吗?关于如何以任何其他方式实现目标的任何建议?
我正在运行最新版本的 valgrind:3.12.0
c++ - 为什么 Valgrind-Massif 和 TOPs 内存消耗之间存在差异?
我想测量linux ubuntu中程序的内存消耗。我比较了两个工具:Valgrind Massif 和 TOP。出于某种原因,即使我使用“--pages-as-heap=yes”来显示所有内存,我也得到了不同的结果。
我编译了以下代码:
/li>
TOP 命令显示程序在延迟函数中时消耗了 4200KB 的虚拟内存。Valgrind-Massif 工具的消耗量为 6340608B。哪一个是正确的?为什么有区别?
虽然 Massif 网站告诉启用“--pages-as-heap=yes”选项,堆栈也被测量,但我没有成功。例如,对于以下程序:
/li>
TOP 报告的内存消耗为:4200 KB,然后是 6032KB,然后是 7984 KB,然后是 9936 KB,然后是 11892 KB,然后是 13844 KB。但是Massif在程序开始的时候只报了6336512 B(其实内存有一些波动,但是很快就停了,而且不是很大)。似乎出于某种原因,Massif 没有在此设置下测量堆栈。为什么会这样?
编辑:
我尝试在发布模式下编译,但遇到了同样的问题。我编译了以下代码:
TOP 还是 4200KB,Massif 大约 6MB。我使用以下命令编译了代码:
此外,当我运行程序时,我使用以下命令增加了堆栈大小: ulimit -s 2000000000 并且在使用 Massif 运行程序时我还增加了堆栈大小,因此我不会遇到堆栈溢出。我仍然得到相同的结果。
valgrind - 我们可以使用地块仅测量某个时期吗?
valgrind -tool=massif 是否具有与callgrind类似的控件来仅在一段时间内分析内存?我们可以在问题运行期间打开和关闭分析吗?