我正在尝试了解我的嵌入式 Linux 应用程序的内存使用情况。/proc/pid/maps实用程序/文件似乎是查看详细信息的好资源。不幸的是,我不理解所有的列和条目。
/proc/pid/maps
匿名 inode 0 条目是什么意思?这些似乎是一些较大的内存段。
中的每一行/proc/$PID/maps描述了进程或线程中的一个连续虚拟内存区域。每行都有以下字段:
/proc/$PID/maps
address perms offset dev inode pathname 08048000-08056000 r-xp 00000000 03:0c 64593 /usr/sbin/gpm
-
r
w``x
p``s``mprotect
mmap
[heap]
[stack]
[vdso]
您可能会注意到很多匿名区域。这些通常由任何文件创建mmap但不附加到任何文件。它们用于许多杂项,例如未在堆上分配的共享内存或缓冲区。例如,我认为 pthread 库使用匿名映射区域作为新线程的堆栈。