一尘不染

在Linux中,如何判断正在使用多少内存进程?

linux

我认为我的LAMP应用程序中可能发生内存泄漏(内存用完,交换开始使用,等等)。如果我可以看到各个进程使用了​​多少内存,则可以帮助我解决问题。有没有办法让我在*
nix中查看此信息?


阅读 338

收藏
2020-06-02

共1个答案

一尘不染

获得正确的内存使用情况比人们想象的要棘手。我能找到的最好方法

echo 0 $(awk '/TYPE/ {print "+", $2}' /proc/`pidof PROCESS`/smaps) | bc

其中“ PROCESS”是要检查的过程的名称,而“ TYPE”是以下之一:

  • Rss :常驻内存使用情况,该进程使用的所有内存,包括该进程与其他进程共享的所有内存。它不包括掉期;
  • Shared :该进程与其他进程共享的内存;
  • Private :此过程使用的私有内存,您可以在此处查找内存泄漏;
  • Swap :交换进程使用的内存;
  • Pss :比例设置大小,良好的整体内存指示器。它是为共享而调整的Rss:如果某个进程在1个私有进程中具有1MiB,在其他10个进程之间共享了20MiB,则Pss为1 + 20/10 = 3MiB

其他有效值是 Size (即虚拟大小,几乎没有意义)和 Referenced (当前标记为引用或访问的内存量)。

您可以使用watch或其他bash-script-fu来监视要监视的进程的那些值。

有关更多信息smapshttp
:
//www.kernel.org/doc/Documentation/filesystems/proc.txt。

2020-06-02