0

我已经上网大约 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,问题仍然存在
4

2 回答 2

0

正如我所说,我重新安装了 CentOS x64 并且内存使用问题仍然存在,所以我对自己的具体情况和我自己的经验有一个理论。
如果您不能完全确定您的程序/应用程序是为 64 位设计的,那么您最好安装 32 位 CentOS,即使是 AMD X64。
我的情况:

  • AMD 速龙 X4 640 处理器(64 位)
  • VMware 7
  • 1 个处理器/4 个内核,1.5GB RAM
  • CentOS 6.4 32位
  • 阿帕奇 (httpd)
  • php 5.3.3
  • Postgresql,(服务器,客户端,contrib,libpq)
  • pgAdmin III
  • 带有firebug 和 colorzilla扩展的 Firefox 17 ESR(默认 centos 浏览器)
  • 歌剧(最新版本)
  • JRE 7.25(仅用于 netbeans 工作——从 Oracle 下载而不是 openJDK)
  • Netbeans 7.3.1 (PHP - HTML5)

现在我打开了 pgadmin、netbeans(有 10 个活动选项卡)和 firefox,可用内存为(150+MB 空闲 + 20+MB 缓冲区 + 200+MB 缓存),如果我在打开 opera 或任何其他程序时需要更多内存一些缓存的内存被释放,因为它应该被完成。哦,SWAP 使用量为 0.00000000,正如您所知,它确实很有帮助,但如果您使用的是在交换中加载的程序(全部或部分),它至少比在 RAM 中加载的程序慢 10 倍。

于 2013-08-07T16:50:22.077 回答
0

如果您使用“htop”查看内存,您会看到内存条有 3 种颜色。我猜你使用的大部分内存都是黄色的。

基本上,您的内存正被各种操作系统缓存使用。这些缓存会根据您的系统需要从内存中推出。系统会保留 ram 副本,以便在数据仍在内存缓存中时再次执行相同的命令/程序时,centos 可以更快地执行。这就解释了为什么你只使用了一部分内存,一旦应用程序关闭就会释放。

这从来都不是我放慢脚步的原因。

在您继续使用时,我已经体验到了 Firefox 内存使用气球。

也许这是一个虚拟化平台问题。您的主机操作系统是什么,您使用的是什么虚拟化平台?

于 2013-08-06T03:51:55.617 回答