Ubuntu 内存使用情况

Ubuntu 内存使用情况

我正在运行 Ubuntu 10.04 并使用它进行一些开发。当我打开 FF、Chrome、Eclipse(Zend Studio 7.2)等并进行一些工作,然后离开时,屏幕保护程序会启动,当我几个小时后回来时(计算机总共运行了大约 1 天),SWAP 被大量使用。我有 4GB 的 RAM,如果我列出所有进程,我计算出所有进程使用了​​大约 2.8GB 的​​ RAM,但 Ubuntu 却显示使用了 3.8GB + 1.2GB 的 SWAP。我想了解这是怎么回事?是否存在一些内存碎片、泄漏?是否可以清理它以再次加快系统速度?

答案1

这可能与总体内存使用情况无关,但与 Linux 中的内存管理器的行为有关。如果进程只是空闲,内核可能会决定交换它们以获取更多的磁盘缓存。

Linux 决定交换非活动进程以获取更多磁盘缓存的速度可以进行调整。默认情况下,Ubuntu 具有vm.swappiness=60

您可能需要尝试不同的值。尝试命令sudo sysctl -w vm.swappiness=10并继续照常使用计算机。如果情况由于此技巧而有所改善,您可以添加一行

vm.swappiness = 10

你的/etc/sysctl.conf文件以使此更改在重启后永久生效。

答案2

只有当计算机进入休眠状态时才会发生这种情况。Ubuntu 会将所有内存放入交换分区,重新加载机器后,我大约用掉了 10%-25% 的交换分区。您的计算机是否设置为自动休眠?

强制将交换内存放入 RAM 的一种方法是运行

$sudo swapoff -a
$sudo swapon -a

我不确定这是不是设计使然,或者是否值得向 Ubuntu 开发人员提出。

答案3

这可能是 Linux 处理内存的方式。简而言之,SWAP 仅在绝对必要时使用。Firefox 非常庞大,并且存在众所周知的内存泄漏,我猜 Eclipse 也非常庞大,Chrome 只会占用 RAM,等等。

实际情况是,当您离开计算机时,内存泄漏会慢慢消耗掉您的物理 RAM。因此,Linux 只会交换不需要的 UI 功能。因此,当您返回时,它必须将这些从交换中拉出。但随后它需要交换其他背景内容,并且当您与 Windows 混在一起时,它可能必须加载/交换许多不同的东西。

您可以通过至少不打开 Firefox 和 Chrome 并使用其保存的标签功能来解决这个问题。我是 Netbeans 的粉丝,所以我不确定 Eclipse 的内存占用情况,但它需要打开吗?

相关内容