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