我已经上网大约 1 周了,我发现的一切都是:“CentOS 知道如何使用内存,别担心”,但我真的认为这是一个问题。
我有一个最近/干净安装 CentOS 6.4 X86_64 final 的 VM,具有 1.5GB RAM、1 个处理器/4 个内核和 700MB SWAP,问题是内存消耗。
我安装了 postgresql、pgadmin3、JRE 7.25(不是 JDK 也不是 OpenJDK)、netbeans 7.3.1 和 apache,但大多数时候(99%)我只需要同时打开 NB 和 firefox,显然还有 httpd 和 pgsql 服务。
好吧,当我打开netbeans时它使用300Mb - 350MB,而Firefox 100MB - 150MB,系统使用的初始内存约为250MB,所以有750MB,系统监视器和free -m命令确认,但在几分钟内,系统会占用我所有的空闲内存并开始使用 100MB - 200MB SWAP 并且它变得非常 SssLOOOWWW .. 我正在开发一个简单的 PHP / JS / HTML 网站。
当系统吃掉我所有的内存并进行交换时,free -m命令会返回:
free -m
total used free shared buffers cached
Mem: 1511532 1477256 34276 0 18652 89325
-/+ b../c..: 1369279 142253
Swap: 711320 198652 512668
我知道实际可用内存约为 140MB,但是:
- 使用了很多内存,系统变得非常慢
- 如果我关闭 NB 和 FF,我只能获得两者释放的内存的一半(250MB)
- SWAP 永远不会释放(仅在重新启动时)
- 如果我再次打开 FF 和 NB,它会再次消耗 250MB,甚至更多的交换!!!
我试过这个:
- 我将 Swappiness 值从 60 更改为 5,实际上系统在使用 95% 的 RAM 之前不会使用交换。
- 我在启动时禁用了不必要的程序,例如蓝牙管理器、邮件、登录声音、能源管理器(它是台式电脑)。
- 我将 JVM 最大堆大小设置为 256MB,实际上在 java/netbeans 之间(虚拟 + 共享)= 实际使用的内存永远不会 > 400MB
- 如果我按服务检查服务(包括多个 httpd 和 PGSql 子服务)使用的内存不超过 750MB
- 我不得不说,当我在 Win 7/WAMP 中测试完全相同的网站时,Netbeans、PGAdmin3、Firefox 和 posgres 服务使用的内存几乎与 centOS(500MB)和系统使用的初始内存相同(900MB) 总使用内存为 1400MB,它没有改变,所以不是编程错误。
- 最后,我重新安装了CentOS,问题仍然存在