我在 Fedora Core Release 6 服务器 (Linux 2.6.19-1.2911.6.5.fc6xen x86_64) 上运行 Java 脚本,担心内存不足。该机器总共有 2 GB 内存。运行“free -tm”显示以下内容:
免费-tm 已使用的、可用的、缓存的共享缓冲区总数 内存:2048 956 1091 0 115 611 -/+ 缓冲区/缓存:229 1818 交换:543 0 543 总计:2591 956 1635
似乎目前大约有一半的内存正在被使用。但是,当我运行命令“ps aux”和“top”时,我似乎找不到正在使用内存的进程或进程组合。以下是“top”的结果:
5473根15 0 63236 19m 2036 S 0 0.9 0:00.33 getAp_StrangeNe 1395 根 18 0 214m 9080 5276 S 0 0.4 0:00.18 httpd 21088 阿帕奇 15 0 217米 7160 2944 S 0 0.3 0:00.14 httpd 21081 阿帕奇 15 0 217m 7128 2952 S 0 0.3 0:00.01 httpd 21085 阿帕奇 15 0 217m 7040 2916 S 0 0.3 0:00.01 httpd 21087 阿帕奇 15 0 217m 7040 2916 S 0 0.3 0:00.00 httpd 21082 Apache 15 0 217m 6492 2524 S 0 0.3 0:00.00 httpd 21084 Apache 15 0 217m 6472 2512 S 0 0.3 0:00.00 httpd 26700 根 18 0 144m 6320 3952 S 0 0.3 0:03.89 php 21086 阿帕奇 15 0 216米 5652 1800 S 0 0.3 0:00.00 httpd 21083 Apache 18 0 216m 5648 1800 S 0 0.3 0:00.00 httpd 4380 根 15 0 73916 2936 2292 R 0 0.1 0:00.00 sshd 4042 根 15 0 73916 2928 2292 S 0 0.1 0:00.01 sshd 5582 后缀 16 0 47572 2508 1984 S 0 0.1 0:00.00 本地 5579 后缀 16 0 49700 2324 1804 S 0 0.1 0:00.00 清理 1495 后缀 15 0 49628 2288 1768 S 0 0.1 0:01.73 qmgr 4601 后缀 15 0 49568 2200 1700 S 0 0.1 0:00.00 拾取 1492 根 15 0 47412 2104 1616 S 0 0.1 0:03.48 主 10654 根 15 0 74272 1684 596 S 0 0.1 0:00.08 屏幕 10655 根 15 0 65308 1676 1212 S 0 0.1 0:00.05 bash 4044 根 15 0 65184 1596 1172 S 0 0.1 0:00.00 bash 4382 根 15 0 65184 1596 1168 S 0 0.1 0:00.01 bash 5460 根 18 0 100m 1588 836 S 0 0.1 0:00.00 crond 1384 ntp 15 0 19760 1296 1024 S 0 0.1 0:00.28 ntpd 1405 根 19 0 73916 1204 552 S 0 0.1 1:50.10 crond 5584 根 16 0 16940 1196 892 S 0 0.1 0:00.05 顶部 1350 根 25 0 26828 1188 904 S 0 0.1 0:00.95 自动挂载 5978 根 15 0 16804 1164 892 R 0 0.1 0:00.00 顶部 28831 根 15 0 44284 1072 628 S 0 0.1 0:00.10 sshd 1497 42949672 15 0 35348 1068 720 S 0 0.1 0:01.51 nrpe 5472 根 19 0 8644 940 800 S 0 0.0 0:00.00 sh 26557 root 15 0 31096 884 520 S 0 0.0 0:01.71 ssh 代理 1149 根 18 0 10104 788 648 S 0 0.0 0:00.00 rpc.statd 1181 根 18 0 42000 744 328 S 0 0.0 0:00.06 rpc.idmapd 325 根 15 -4 12560 684 364 S 0 0.0 0:00.01 udevd 1 根 15 0 10308 680 568 S 0 0.0 0:00.46 初始化 1129 rpc 15 0 8004 608 452 S 0 0.0 0:20.77 端口映射 1103 根 15 0 5864 604 484 S 0 0.0 0:11.41 syslogd 1499 根 15 0 3760 512 440 S 0 0.0 0:00.00 代理 1424 根 18 0 18668 464 308 S 0 0.0 0:00.00 atd 1106 根 15 0 3760 440 360 S 0 0.0 0:00.00 klogd 1199 dbus 25 0 25452 432 216 S 0 0.0 0:00.00 dbus 守护进程 1117 根 18 0 6436 328 240 S 0 0.0 0:00.66 中断平衡 2 根 RT 0 0 0 0 S 0 0.0 0:00.61 迁移/0 3 根 34 19 0 0 0 S 0 0.0 0:00.20 ksoftirqd/0 4 根 RT 0 0 0 0 S 0 0.0 0:00.00 看门狗/0 5 根 10 -5 0 0 0 S 0 0.0 0:00.70 事件/0 6 根 10 -5 0 0 0 S 0 0.0 0:00.00 khelper 7 根 10 -5 0 0 0 S 0 0.0 0:00.00 kthread 9 根 10 -5 0 0 0 S 0 0.0 0:00.00 xenwatch 10 根 10 -5 0 0 0 S 0 0.0 0:00.00 xenbus 15 根 RT -5 0 0 0 S 0 0.0 0:00.66 迁移/1 16 根 34 19 0 0 0 S 0 0.0 0:00.26 ksoftirqd/1 17 根 RT -5 0 0 0 S 0 0.0 0:00.00 看门狗/1 18 根 10 -5 0 0 0 S 0 0.0 0:00.98 事件/1 58 根 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/0 59 根 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/1 60 根 20 -5 0 0 0 S 0 0.0 0:00.00 cqueue/0 61 根 10 -5 0 0 0 S 0 0.0 0:00.00 cqueue/1 63根20 -5 0 0 0 S 0 0.0 0:00.00 ksuspend_usbd 66 根 20 -5 0 0 0 S 0 0.0 0:00.00 khubd 68 根 10 -5 0 0 0 S 0 0.0 0:00.00 kseriod 99 根 10 -5 0 0 0 S 0 0.0 0:00.70 kswapd0 100 根 20 -5 0 0 0 S 0 0.0 0:00.00 aio/0 101 根 20 -5 0 0 0 S 0 0.0 0:00.00 aio/1 234 根 11 -5 0 0 0 S 0 0.0 0:00.00 kpsmoused 262 根 18 -5 0 0 0 S 0 0.0 0:00.00 公里镜像 269 根 20 -5 0 0 0 S 0 0.0 0:00.00 ksnapd 272 根 10 -5 0 0 0 S 0 0.0 0:25.29 kjournald 296 根 11 -5 0 0 0 S 0 0.0 0:00.00 kauditd 700 根 14 -5 0 0 0 S 0 0.0 0:00.00 kmpathd/0 701 根 14 -5 0 0 0 S 0 0.0 0:00.00 kmpathd/1 725 根 12 -5 0 0 0 S 0 0.0 0:00.00 kjournald 1230 根 10 -5 0 0 0 S 0 0.0 0:02.87 rpciod/0 1231 根 10 -5 0 0 0 S 0 0.0 0:00.00 rpciod/1 1232 根 19 0 0 0 0 S 0 0.0 0:00.00 锁定 2405 根 15 0 0 0 0 S 0 0.0 0:00.31 pdflush 28522 根 15 0 0 0 0 S 0 0.0 0:00.00 pdflush
我对操作系统上的内存管理一无所知,因此不确定我使用的命令是否能满足我所需的信息。对于可能发生的情况,您有什么建议吗?我是否误解了所呈现的内容?
答案1
据我所知,您的机器正在使用 229 MB 内存进行处理,然后试图通过在内存中缓存 611 MB 的磁盘来提高其性能。这没什么奇怪的;如果它有多余的内存,为什么不使用它呢?
附带说明一下,您应该预料到,任何运行了一段时间的机器上的几乎所有内存都被“使用”了。
答案2
查看 +/- 缓冲区/缓存行。
Mem: 行中的内存使用情况包括操作系统用于缓存文件访问的临时存储。
答案3
这个网站可能会有帮助:
此外,该网站还对 Linux 上内存使用情况进行了相当详尽的解释: