我想在Linux上运行的RAM中获取已分配内存的映射。
我希望在给定时间找到内存的利用率以及用户进程和内核模块以及内核本身的分配细节。
答案 0 :(得分:2)
由于共享内存,缓存和按需分页,这非常难以实现。
你确实可以使用/ proc / PID / maps作为前面的答案,以了解glibc,作为一个例子,在某个过程中占用一定范围的虚拟内存,但部分内容在映射该库的所有进程之间共享(代码部分),部分不是(例如动态链接器表)。部分内存空间可能根本不在RAM中(分页到磁盘)和写入语义可能意味着下一刻的内存图片可能会非常不同。
添加Linux在缓存中的复杂用法(页面和缓冲区缓存是主要的),其中一部分可以在内核突发事件中被驱逐(缓存IO缓冲区不脏)但有些不能(例如tmpfs)它很快就变得非常毛茸茸。
简而言之 - 没有一个好的答案可以真实地了解使用RAM的内容以及Linux系统中的内容。我知道的最佳答案是页面地图和相关工具。在这里阅读所有相关内容:http://lwn.net/Articles/230975/
答案 1 :(得分:0)
您可以通过检查过程内存映射
来找到它cat /proc/<PID>/maps
和整体记忆状态
cat /proc/meminfo