Linux top 实用程序中共享内存列的说明

use*_*029 2 linux memory-management

我们在 Linux 下运行的程序遇到内存分配问题。我们正在使用 top 实用程序来尝试确定问题的根本原因。我们注意到的一件事是,一个进程的共享内存值过高(顶部的 SHR 列)。

阅读 top 的 MAN 页使我相信 SHR 列代表通过共享内存进行进程间通信的内存量。它是否正确?

如果是这样,那么任何进程分配 50 - 60 MB 的共享内存是否有意义(X11 仅分配 11MB,根据它必须执行的操作,这似乎是合理的)。

谢谢...

小智 5

SHR列表示进程使用的共享内存量。它可用于进程间通信,但更常见的情况是,这是应用程序链接的共享库使用的内存。

\n\n

来自Linux 内核:内存管理

\n\n
\n

共享虚拟内存

\n\n

虽然虚拟内存允许进程拥有单独的(虚拟)地址空间,但有时您需要进程共享内存。例如,系统中可能有多个进程运行 bash 命令 shell 。与其拥有多个 bash 副本(每个进程虚拟地址空间都有一个),不如在物理内存中仅拥有一份副本,并且所有运行 bash 的进程共享该副本。\n 动态库是在多个进程之间共享执行代码的另一个常见示例。

\n\n

共享内存还可以用作进程间通信 (IPC) 机制,两个或多个进程通过所有进程共用的内存交换信息。Linux 支持 Unix TM System V 共享内存 IPC。

\n
\n\n

顶部手册页对此专栏的介绍:

\n\n
   t: SHR  --  Shared Mem size (kb)\n      The amount of shared memory used by a task.  It simply reflects mem\xe2\x80\x90\n      ory that could be potentially shared with other processes.\n
Run Code Online (Sandbox Code Playgroud)\n