linux的内存计算不准如何解决?

内存计算不准的问题,通过ps或者top中查到内存使用累计后,和free或/proc/meminfo中内存的统计值,在一些情况下,差异较大,问题原因在哪?之前怀疑是共享内存(动态链接库、堆、栈)有关系,不知道关注这个点对不对...显示全部

内存计算不准的问题,通过ps或者top中查到内存使用累计后,和free或/proc/meminfo中内存的统计值,在一些情况下,差异较大,问题原因在哪?之前怀疑是共享内存(动态链接库、堆、栈)有关系,不知道关注这个点对不对

收起
参与18

查看其它 4 个回答zhaoxiaoyong081的回答

zhaoxiaoyong081zhaoxiaoyong081资深工程师平安科技

在一些情况下,通过ps或top命令查看的内存使用累计值与free命令或/proc/meminfo文件中的内存统计值之间可能存在较大差异。这可以由以下原因导致:

  1. 缓存和缓冲区:Linux系统使用缓存和缓冲区来提高文件系统性能。这些缓存和缓冲区占用的内存会被标记为"cached"(缓存)和"buffers"(缓冲区)类型。然而,这些内存并不一定是实际被进程使用的内存,而是被内核保留用于提高IO性能。因此,ps或top命令显示的内存使用累计值可能包括了这些缓存和缓冲区,而free命令或/proc/meminfo中的统计值通常不包括它们。
  2. 共享内存:共享内存是一种特殊的内存区域,多个进程可以访问和共享它。ps或top命令显示的内存使用累计值可能会包括共享内存的大小,而free命令或/proc/meminfo中的统计值通常不会将其计算在内。
  3. 内存回收:Linux系统具有内存回收机制,可以在需要时回收未使用的内存。这意味着一些进程释放的内存可能不会立即反映在ps或top命令显示的内存使用累计值中。相比之下,free命令或/proc/meminfo中的统计值通常更及时地反映实际的内存使用情况。

综上所述,ps或top命令显示的内存使用累计值和free命令或/proc/meminfo中的内存统计值之间的差异通常是由于缓存和缓冲区、共享内存以及内存回收等因素造成的。如果你需要更准确地了解进程实际使用的内存,建议参考free命令或/proc/meminfo中的统计值,并结合其他工具和方法进行综合分析

保险 · 2023-06-30
浏览594

回答者

zhaoxiaoyong081
资深工程师平安科技
擅长领域: 服务器Linux系统运维

zhaoxiaoyong081 最近回答过的问题

回答状态

  • 发布时间:2023-06-30
  • 关注会员:6 人
  • 回答浏览:594
  • X社区推广