你怎么知道哪个程序使用了太多的内存?

Ubuntu最近一直在崩溃。 我认为它是因为内存耗尽,所以我运行了free -m命令,发现我的内存使用率非常高。 那么,我跑到top找到罪魁祸首,但显示的进程使用不到1.5%的内存。 我怎么知道哪个程序使ubuntu崩溃/内存不足? 以下是输出:

 shafee@shafee-pc:~$ free -m total used free shared buffers cached Mem: 3824 3714 110 0 978 1954 -/+ buffers/cache: 780 3044 Swap: 99 0 99 shafee@shafee-pc:~$ top top - 02:12:14 up 1:24, 2 users, load average: 0.16, 0.42, 1.49 Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie Cpu(s): 2.9%us, 1.9%sy, 0.3%ni, 79.3%id, 15.5%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 3916708k total, 3803848k used, 112860k free, 1002308k buffers Swap: 102396k total, 0k used, 102396k free, 2001852k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4200 root 20 0 289m 53m 38m S 2 1.4 1:06.45 Xorg 5590 shafee 20 0 19348 1368 956 R 2 0.0 0:00.01 top 1 root 20 0 24124 2136 1264 S 0 0.1 0:02.05 init 2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0 0.0 0:24.23 ksoftirqd/0 6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1 9 root 20 0 0 0 0 S 0 0.0 0:00.11 ksoftirqd/1 11 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/2 13 root 20 0 0 0 0 S 0 0.0 0:03.89 ksoftirqd/2 14 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/3 16 root 20 0 0 0 0 S 0 0.0 0:00.16 ksoftirqd/3 17 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset 18 root 0 -20 0 0 0 S 0 0.0 0:00.00 khelper 19 root 0 -20 0 0 0 S 0 0.0 0:00.00 netns 21 root 20 0 0 0 0 S 0 0.0 0:00.01 sync_supers shafee@shafee-pc:~$ 

或者拥有110mb的可用内存并且我的问题与其他内容有关是否正常?

您正在读取错误的输出。 Linux内核执行了很多自己的内存管理,反过来分配的内存超过了实际需要 – 所以你的真正“ 3044内存”量是3044位于+/- Buffers/cache行的“Free”列中,这使得实际上只消耗了780 MB。

默认情况下, top将根据CPU消耗进行排序。 您可以按Shift + M按消耗的内存百分比进行排序 – 让您更好地掌握使用分配给内核的内存的软件。


 free -m total used free shared buffers cached Mem: 7873 3916 3956 0 231 1117 -/+ buffers/cache: 2567 5305 Swap: 12401 0 12401 

在内存排序的顶部:

 top - 17:05:18 up 2 days, 1:40, 4 users, load average: 0.21, 0.14, 0.11 Tasks: 237 total, 1 running, 234 sleeping, 0 stopped, 2 zombie Cpu(s): 1.6%us, 0.8%sy, 0.1%ni, 96.7%id, 0.8%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 8062420k total, 4013632k used, 4048788k free, 237204k buffers Swap: 12699644k total, 292k used, 12699352k free, 1144752k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1632 root 20 0 884m 240m 6532 S 0 3.1 1:20.17 java 3911 marco 20 0 1011m 165m 22m S 0 2.1 9:20.62 chrome 3852 marco 20 0 770m 162m 45m S 0 2.1 14:59.59 chrome 1091 root 20 0 491m 160m 118m S 3 2.0 29:19.44 Xorg 1747 marco 20 0 659m 108m 34m S 1 1.4 18:43.92 compiz 3964 marco 20 0 1113m 99m 21m S 0 1.3 18:51.88 chrome 1759 marco 20 0 668m 94m 21m S 0 1.2 2:27.42 nautilus 3046 marco 20 0 788m 86m 26m S 0 1.1 1:22.96 evolution 1793 marco 20 0 647m 85m 18m S 0 1.1 0:12.74 shutter 1791 marco 20 0 404m 85m 13m S 0 1.1 5:19.51 bitcoin 2938 marco 20 0 809m 78m 31m S 0 1.0 1:01.07 empathy 9630 marco 20 0 265m 73m 19m S 1 0.9 12:41.52 skype 9618 marco 20 0 914m 64m 21m S 0 0.8 1:14.04 chrome 1777 marco 20 0 432m 64m 14m S 0 0.8 1:45.96 pastie 

最后,为了帮助您诊断实际软件是什么,请尝试将-c标志传递给top: top -c ,因为它将为您提供运行命令的完整路径,名称和参数。

你可以启动应用程序gnome-system-monitor最好找出哪些应用程序使用了多少ram,以及使用了多少cpu。 您可以更改流程的优先级以更快地运行,例如,如果您想要转换video等。

您可以使用以下脚本查看GNU Linux系统中各个应用程序的总内存使用情况

http://www.zyxware.com/articles/4446/show-total-memory-usage-by-each-application-in-your-ubuntu-or-any-gnu-linux-system

Kubuntu我只需按下CtrlEsc ,然后使用感兴趣的字段对事物进行排序:内存,CPU,……

在此处输入图像描述

这是一个很好的问题,但信息显示有大量可用内存。 你应该监视你的内存使用情况。

我最喜欢的系统监视器是conky和内存显示是其中的一部分:

Conky.gif

总内存行显示7.5 GiB正在使用7.4 GiB。

详细的记忆线显示:

  • Web Content使用7%的内存。 这是一个Firefox子程序。
  • Firefox本身使用7%的内存
  • ffmpeg使用3%的内存。 这是我们正在观看video的.gif录音机。

Conky具有高度可配置性,每个人的桌面看起来都不同。 你可以google conky并获得78.7万次点击。