关于红旗5.0内存管理

红旗5.0是我最近试用的第三套linux发行版,昨天上这里看到有帖子说很吃内存,于是乎我也打开我的任务管理器,一看吓一跳!我的内存占用竟然达到近 1G!这个时候,我的红旗5.0已经开机近10小时,打开过很多程序,游览过很多网站,下载过很多东东,操作感觉并不慢,和开机时差不多,有些程序还比刚 开机时打开快很多。 
 说到这里,我现介绍一下我的配置: 
 amd 1800+ OC 1.9G,nf2芯片组主板,内存1G,硬盘80G,显卡ati7500, 
 这时我按ctrl+alt+f1,进入命令模式,键入 free m 
 这时看到虽然内存占用接近1G,但swap分区竟然还是空的,占用为 0! 
  于是我返回图形模式,关了全部程序,发现内存占用并没减少多少,还是维持在990M以上!于是我关机重启,进入系统后内存占用就达360多M,打开 opoffice,内存用量急剧上升到近500M,再打开firefox,内存一路飙升,很快随着其他程序的打开,内存就升到了900M,进入字符模式 看,swap占用始终为 0!关闭openoffice,内存没见明显下降,再次打开openoffice,发觉打开速度比 第一次快很多,内存没见明显 上升。 
 这时我立即下线,然后转换硬盘,打开我安装的suse 10.0来,进入系统一看,suse10.0 的,刚启动时,进入kde界面, 占用内存81M,随着打开程序的增多,内存使用量一路飙升,关闭部分程序内存使用量就 立即有所下降,使用一段时间后,关闭所有程序,内存使用量维持在 130左右,在整个过程中,suse kde桌面的感受速度不及红旗5.0,应该说慢不少,但开机到关机中间,程序打开运行速度没什么明显变化。 
 运行suse 10.0 近一小时,我又下线,换了安装fc 5.0发行版的硬盘,启动进入fc 5.0,发现内存占用约130m,运行后,内存随着程序打开的 多少而变化,运行速度和红旗5.0差不多,是gnome界面。 
  带着疑问,联想到是否和linux硬盘缓冲有关,我把内存降下来又会如何?,今天一早,先拔除一条内存,把我的内存从1G减少到512M,(本来还想再少 点,可惜我最小的一条内存就是512M了,原来有的256M内存早就出手了)启动进入红旗linux桌面5.0,初始内存占用为360M左右,打开 openoffice,内存占用达到460M,继续打开很多网页,游戏等,内存很快就在500下方摆动,始终没有越过510M,程序打开和运行速度变换不 大,最近打开的程序关闭后,再次打开速度比较快,进入字符模式查看,swap还是为0,至此,终于摸清了红旗5.0的内存管理模式,其实也是linux的 内存使用方式。 
 
 1、linux内存使用效率明显比ms的高,在 windows下,尽管内存足够,如果你没有禁用虚拟内存的话,多少会把一些东西写入虚拟内存 
 
 2、linux尽量使用物理内存,只要物理内存够用,就不使用swap区,linux关闭程序后,在物理内存足够的情况下,并不立即退出内存,下次打开同样的程序,速度会很快。 
 
 3、当物理内存不够用时,linux才会把已经关闭的程序所占用内存清空,以便给新打开的程序使用,轻易不会使用swap区 
 
 4、在实际运行中的程序所需物理内存不够的情况下,才会调用swap做缓存。 
 
 这也就是说,在linux内,你有多少内存,她就尽量使用,如果你有2G内存,系统运行一段时间后,很有可能你的内存占用就会接近2G,你只有256M内存的话,她也会一直全部使用,但不会因为在内存够用的情况下去使用swap缓存! 
 
  同时,红旗5.0的内存使用统计可能和其他发行版有所不同,其他发行版是以实际运行中的程序所占用的内存来统计的,并不统计程序已经退出,但内存还没有释 放的部分(注意,这些数据下次还是可以使用的),而红旗5.0是以内存有效数据为准,尽管程序已经退出,但存在内存中的数据还没清空,这些数据还是有效 的,下次打开同样的程序,可以直接使用。

时间: 2024-09-16 04:50:51

关于红旗5.0内存管理的相关文章

php5.2.0内存管理改进_php技巧

php5.2.0的内存管理做了较大的改进,某些情况下内存不能释放的问题不存在了.测试php脚本(mem.php),我用echo N>>和sleep来控制脚本在某个阶段暂停以便检测状态. 复制代码 代码如下: <?php  echo '1>>';  sleep(5);  $o = array();  for ($i=0;$i<=100000;$i++) {      $o[]='aaaaaaaaaaaaaaaaaaaaa';  }  echo '2>>'; 

Windows Embedded CE6.0高效的内存管理

  Windows Embedded CE6.0高效的内存管理 作者:Douglas Boling 时间:2007年3月 本文来自:微软MSDN技术论文中心 摘要      本文主要介绍新版本嵌入式操作系统(Windows Embedded CE6.0)是如何管理内存的,内容主要包括如何构架以及在应用程序发生的变化两个部分. 简要介绍      在过去的10年里,Windows Embedded CE操作系统已经从一个非成熟的操作系统发展成一个新的.有活力的操作系统.当然,Windows Emb

Valgrind 3.7.0发布 内存管理工具

Valgrind 是一款帮助您找到程序中的内存管理问题的工具,常用于内存调试.内存泄漏检测以及性能分析.当一个程序运行在Valgrind的监督下,所有内存的读取和写入进行检查,并调用拦截的 malloc/new/free/delete . Valgrind 3.7.0该版本增加了支持ARM/Android,S390X/Linux 和 Mac OS X 10.7(Lion).已加入一个GDB服务器,所以你现在可以从GDB控制您的应用程序,而在Valgrind运行.已经有性能和http://www.

聊聊内存管理

这篇文章我们聊聊内存管理. 本来我想不针对于任何具体的操作系统来谈内存管理,但是又觉得不接地气.言之无物.所以我决定在阐述概念的同时,还针对IA32平台Linux下的内存管理做简要的介绍,并且以实验来证明结论.以下内容分拆为几个大标题和小节,内容前后承接. 物理地址空间 首先,什么是物理地址空间?我们知道CPU与外部进行信息传递的公用通道就是总线,一般而言,CPU有三大总线:控制总线.数据总线.地址总线.这三类总线在一定程度上决定了CPU对外部设备的控制和数据传送能力.其中地址总线决定了CPU能

iOS开发系列—Objective-C之内存管理

概述 我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上).如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存.其他高级语言如C#.Java都是通过垃圾回收来(GC)解决这个问题的,但在OjbC中并没有类似的垃圾回收机制,因此它的内存管理就需要由开发人员手动维护.今天将着重介绍ObjC内存管理: 引用计数器 属性参数 自动释放池 引用计数器 在Xcode4.2及之后的版本中

C# 语言规范--1.4 自动内存管理

规范 手动内存管理要求开发人员管理内存块的分配和回收.手动内存管理可能既耗时又麻烦.在 C# 中提供了自动内存管理,使开发人员从这个繁重的任务中解脱出来.在绝大多数情况下,自动内存管理可以提高代码质量和开发人员的工作效率,并且不会对表达能力或性能造成负面影响. 示例 using System; public class Stack {    private Node first = null;    public bool Empty {       get {          return

[share]深入探讨PHP中的内存管理问题

一. 内存 在PHP中,填充一个字符串变量相当简单,这只需要一个语句"<?php $str = "hello world "; ?>"即可,并且该字符串能够被自由地修改.拷贝和移动.而在C语言中,尽管你能够编写例如"char *str = "hello world ";"这样的一个简单的静态字符串:但是,却不能修改该字符串,因为它生存于程序空间内.为了创建一个可操纵的字符串,你必须分配一个内存块,并且通过一个函数(

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们平时开发扩展, 修复PHP的bug的时候, 却对这一部分的知识需要有一个良好的理解. PHP开发组内的很多

通过案例深入探讨PHP中的内存管理问题

问题  内存管理对于长期运行的程序,例如服务器守护程序,是相当重要的影响:因此,理解PHP是如何分配与释放内存的对于创建这类程序极为重要.本文将重点探讨PHP的内存管理问题. 一. 内存 在PHP中,填充一个字符串变量相当简单,这只需要一个语句"<?php $str = 'hello world '; ?>"即可,并且该字符串能够被自由地修改.拷贝和移动.而在C语言中,尽管你能够编写例如"char *str = "hello world ";&