处理linux上的使用内存

时间:2009-08-06 08:29:43

标签: linux

如何在linux上监控内存的进程使用情况? 完全想知道每个进程从内存中获取了多少。

4 个答案:

答案 0 :(得分:2)

这真的很难,因为Linux支持共享内存,这意味着任务与其他进程共享其部分或大部分内存。

更糟糕的是,它还支持虚拟内存,这意味着进程可以在内存中进行逻辑映射,但实际上当时并不在物理内存中。

线程实际上只是一个特殊情况,其中内存映射与另一个完全共享。

我们只有:

  • 虚拟内存大小 - 由“VIRT”中的“top”报告 - 这是进程映射的地址空间量。其中一些可能被映射到不会耗尽物理内存的东西(例如,多次映射相同的文件),并且其中大部分可能被映射但未分配。
  • 驻留集大小 - 进程映射的驻留内存量,即物理内存 - 但当然其中许多将与其他进程共享。

它们都不是我们想象的“内存使用”。

请注意,非驻留页面不一定要交换到交换区域 - 它们通常是需求加载的页面(例如来自mmap,库和可执行文件)尚未加载(或先前已加载然后被丢弃) )。

答案 1 :(得分:1)

使用“top”命令以交互方式查看此内容,或键入“ps aux”以获取所有进程的完整列表。然后,您可以对其进行grep以获取特定进程的确切统计信息,例如:“ps aux | grep apache”。

答案 2 :(得分:1)

通常很难确切知道Linux上的共享库应用程序正在使用多少内存 - 通常,您需要“ps aux”输出中的RSS列。

Here是一些可能有用的类似顶级的实用程序。

答案 3 :(得分:0)

我现在找不到,但我认为可以在/ proc /下找到一些信息, 在那些刚刚以数字命名的目录(过程中)。

因此对于具有pid 7365的进程,您可以开始查看/ proc / 7365 / status之类的内容。