如何解决获取Linux系统中c程序的峰值堆内存使用情况
我有一个 c 程序,比如说 moment(dataObj.termDate).format("YYYY-MM-DD");
。我可以使用以下工具吗:
- 问题之钩:
a.out
具体来说,这是在Linux系统中。
另一个类似的问题是我可以在我的源程序中插入一段代码,每次执行时,它都会报告当前的堆内存使用情况。喜欢:
2. 问题的钩子:
>$ peak-memory ./a.out
Peak heap memory allocated: 12345678 Bytes
我知道我可以使用包装器 int main(){
int *a = (int*) malloc(12);
// some code...
print_heap_usage();
// other code...
}
和 my_malloc
函数来跟踪分配和释放到全局变量的内存。但是对于别人的源代码是不切实际的,我可能需要修改它的很多源代码。而且我不能再使用 my_free
和 new
。
我搜索了 stackoverflow,有一个相关的问题 Get peak amount of memory used by a C program 但它询问了 Windows 系统,并不特别关心堆内存使用情况。有些答案说要使用 delete
,我用 google 搜索了一下,发现它无法判断堆的使用情况。
解决方法
要么
Statistics for Memory Allocation with malloc
或
注意:检查符合部分。
另一个噱头(在终端中):
cat /proc/meminfo
-
free
(来自 procps 包,使用 /proc/meminfo,参见函数meminfo
中的 https://gitlab.com/procps-ng/procps/-/blob/master/proc/sysinfo.c 行 698)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。