其实我的代码有malloc。我使用的是ubuntu操作系统,我想知道使用了多少堆内存?
是否有任何命令可以查找正在运行的进程在ubuntu OS中使用了多少堆?
现在假设malloc处于无限循环中并且它在一个终端中运行并使用另一个终端我想知道该运行进程占用了多少堆内存
答案 0 :(得分:0)
你可以使用/ proc文件系统
/ proc /进程/ shmam
它会告诉你当时正在使用多少内存。
详细输入参考
https://serverfault.com/questions/48582/how-is-memory-usage-reported-in-linux
How to measure actual memory usage of an application or process?
答案 1 :(得分:0)
如果您真的想知道应用程序实际使用的内存量,则需要在分析器中运行它。例如, valgrind
可以让您深入了解所使用的内存量,更重要的是,可以了解程序中可能存在的内存泄漏。
Valgrind基本上是一个x86模拟器,它检查所有内存的读写,拦截所有分配和释放内存的调用。 valgrind的memcheck工具可以检测到以下内容:
1)使用未初始化的记忆,
2)在释放后读/写内存
3)读取/写下malloc'd块的结尾
4)在堆栈下面读取/写入不适当的区域。
5)内存泄漏
6)malloc / new / new [] vs free / delete / delete []
的使用不匹配7)在memcpy()和相关函数中重叠src和dst指针
8)双重释放内存
9)将不可寻址的字节传递给系统调用