红联Linux门户
Linux帮助

Linux的高效内存利用(针对某些贬词不当之文)

发布时间:2010-03-27 00:35:45来源:红联作者:Dawnson
最近看到些文章,对Windows极尽溢美之词,这无可厚非,因为Windows确实也有它出彩的地方,但是不能把我们Linux踏在脚下说那些话!
这点我只从内存利用上来讲一点!Linux系统(至少我的Fedora是这样)的内存利用率能达到99%,这是Windows系统想都不敢想的,Windows只是想方设法让内存使用率低点,好让你又要运行其它软件时能有空间放。而你在Linux下,你用free命令查看一下,你会发现,系统把内存作为缓存使用了。譬如我现在的内存状态,程序使用了23%,缓存使用了52%。我的是Fedora系统,在Gnome的上方面板中可以添加一程序,叫“系统监视器”,这个可以在上面直观地看到,不信的话就用free命令看下内存使用,再看下X-window下的“系统监视器”比较一下,X-window下的“系统监视器”在“应用程序”->“系统工具”里,你会发现二者不同,那是因为后者只显示程序占用率。
而对操作系统原理稍有了解或者是电子类专业的人都知道,内存是半导体电路,存取速度非常快,是唯一能勉强跟上CPU速度的硬件,虽然现在的电脑里一般有二级缓存,甚至去年年底出的有的都有三级缓存,但是那些cache终究很小。Linux能充分利用这点,从而充分利用内存资源。
为什么呢?既然有此好处,为什么Windows不这样干?这就牵涉到一个算法问题了,Linux的内存调度算法相当高明,这是Windows无法媲美的。不得不承认,微软里有很多的大牛,但是世界范围的程序高手更多,人多力量大,集思广益,Linux的内存调度算法从而显然更好!有人说那你Linux下内存使用那么多,你想再运行一个软件怎么办??呵呵,放心,Linux能帮你及时地分配好内存资源,用过Linux的人都知道,内存总有(当然,你内存只有512MB或者你运行了一大堆的大软件或者你运行的软件里面算法不好使得堆栈等大量使用从而耗尽内存,那没办法)这在Windows下几乎是不可能的!
我们学校去年放假时,江苏几家公司联合办了个比赛,当然要求很多,我记得的其中有一点,是要求软件运行时,能将数据库动态载入内存。大家都知道,数据库若是能载入内存,那用户访问速度则快多了。但是数据库一般都很大,要将它载入内存,呵呵 ,这可不是一件容易的事,容易的话那些公司也就不会搞这个比赛了,他们给的奖金是最高60000啊!大赛对象不限,说明他们对这项技术的渴求。这从侧面也说明了内存的充分利用是今后的大势所趋。因为很显然,现在的内存越来越便宜(当然,去年下半年又涨了,但是和以前相比,现在的电脑内存大了,相对便宜了,而且以后肯定会更便宜)。对于我们个人用户可能感党不深刻,但是如果是一台服务器,那改善则不是一点一点了!!!随着现在很多的EDA工具的出现,教育的更先进,以及在前人的研究的基础上,我们有理由相信以后的半导体电路会设计得越来越好!那时就不是个梦了!
好了,我就从内存利用上来为Linux辩解一下,至于其它的像安全性之类的,则地球人都知道,Windows是出了名的差。09年的系统安全测试会上,Mac OS 成为第一个被攻破的系统,继而是Windows,好像没有坚持到一分钟,最后Ubuntu成为坚持到最后一个的系统(这有点出乎我意外),当然,这是我同学告诉我的(他是Windows大牛,对Windows系统非常了解,所以他是个黑机高手,甚至黑过服务器,曾黑进学校的服务器),也当然,我相信这是事实。
下面附上我的几张图:
注意图上部面板上的小黄色方框!看不清的话看下图:
[attach]29983[/attach]
free 命令显示我的2GB内存只剩下312MB了:
[attach]29984[/attach]
系统监视器显示只用了463MB:
[attach]29985[/attach]
文章评论

共有 17 条评论

  1. hug1985 于 2012-06-02 18:55:20发表:

    也准备学习LINUX下编程,没信心啊

  2. hnchuan 于 2012-06-02 10:00:15发表:

    哦,这个,需要我再加强学习啊

  3. larmbr 于 2012-05-04 14:59:36发表:

    感谢分享,学习了,谢谢!!!

  4. organization 于 2012-04-12 09:38:06发表:

    windows不提供大容量内存系统缓冲不是做不到。是因为该系统的内存回收机制有缺陷。经常回收不完,会发生泄露。如果用大容量内存做了缓冲到时候应用程序需要内存的时候就会增加泄露的量。从而提前消耗尽物理内存而导致死机。

  5. skybuler 于 2012-04-11 11:53:27发表:

    路过,学习...

  6. pl_014 于 2010-04-11 23:01:18发表:

    [i=s] 本帖最后由 pl_014 于 2010-4-11 23:02 编辑 [/i]

    windowsxp(32位)下占用1000M内存+1000M虚拟内存的程序,在opensuse(64位)下连2G内存还没占满了,交换分区使用完全是0

  7. aaronkwom 于 2010-04-08 21:35:22发表:

    学习了

  8. kang5456 于 2010-04-03 11:23:13发表:

    楼主是永川的啊~~老乡!

  9. dorte 于 2010-04-02 23:52:33发表:

    学习了

  10. 大宝 于 2010-03-28 21:58:18发表:

    最搞笑的是我还见到某些博客作者还对瘟到死的内存机制大加赞赏~

  11. Lahn 于 2010-03-28 09:27:56发表:

    学习了,长见识~~~~~~~~

  12. 王中云 于 2010-03-27 23:57:53发表:

    了解

  13. cmjlxzhaoh 于 2010-03-27 18:47:09发表:

    呀呀呀呀呀呀呀。。。。。老大你是牛人,我之前只知道Linux确实要比Windows牛X多了,却不知道细节。
    听说,在win下编程,就想带着枷锁跳舞。
    不知道,这位大虾有没这种感受?

  14. Dawnson 于 2010-03-27 11:23:17发表:

    4# dchwlinux
    你说的是dock吧?我用的cairo-dock。

  15. dchwlinux 于 2010-03-27 10:52:05发表:

    楼主用的什么Doc?

  16. Quack 于 2010-03-27 08:30:21发表:

    路过学习

  17. gzl1100 于 2010-03-27 01:29:41发表:

    对于flash来说,linux的内存机制,就是灾难了。(所以我一般都会在使用firefox的添加flashblock插件)