设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 综合讨论区 —— LinuxSir.cn
›
Linux 基础讨论区(新手速成)
›
Linux的如何进行内存管理?
返回列表
查看:
2211
|
回复:
9
Linux的如何进行内存管理?
[复制链接]
guccio
guccio
当前离线
积分
1054
IP卡
狗仔卡
发表于 2002-12-12 01:32:31
|
显示全部楼层
|
阅读模式
每次在linux里运行了很长时间后用free命令查看剩余内存总是会变的很少,但是swap分区使用率总是0,这样的话swap分区有什么用呢???还有即时退出了所由程序可是内存还是跟刚进x是有很大差距,大家都来讨论一下怎么使linux释放多余的内存空间,就象windows下的内存优化软件那样?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
jerboa
jerboa
当前离线
积分
345
IP卡
狗仔卡
发表于 2002-12-12 08:44:30
|
显示全部楼层
不要用windows管理内存的方法思考linux的内存管理。
linux的内存管理采用Slab算法,Slab算法可以理解为:
分配对象:
if(在对象对应的缓存区中还没有空闲对象的位置) {
获得此对象,不必再做作初始化
}
else {
分配内存
初始化对象
}
释放对象:
只需在缓冲中将相应位置标为空闲,而不需要作析构
复制代码
在系统资源不足时,slab算法也允许将一部分未用的缓冲空间释放,以缓解系统压力:
从缓冲中取得一些未使用的对象空间
对这些对象作析构
将对象所占的空间释放给系统
复制代码
因此,只有系统申请和释放空间时,对象的初始化和析构方法才被调用,考虑到操作系统中的大量对象的初始化与析构部分是个费时的 过程,故采用slab算法所获得的性能提升是相当可观的。如:运行了KDE系统后,KDE申请了大量的空间,但当KDE退出后,内核只在相应的空间对象并没有立即释放,而是直接在缓冲区中对空闲指针指向这个对象空间,并由此进行slab链表的结构变化。因此大家看到的内存并没有被释放。
采用slab算法,是2.4内核重大改进,slab的优点是可以大大提高内存的利用率以及硬件缓冲区级系统总线的利用率。从这点上看linux的内存管理要比windows优越的多。
回复
支持
反对
使用道具
举报
显身卡
doooom
doooom
当前离线
积分
2954
IP卡
狗仔卡
发表于 2002-12-12 09:01:19
|
显示全部楼层
好,长知识。
回复
支持
反对
使用道具
举报
显身卡
guccio
guccio
当前离线
积分
1054
IP卡
狗仔卡
楼主
|
发表于 2002-12-12 09:02:46
|
显示全部楼层
厉害
回复
支持
反对
使用道具
举报
显身卡
guccio
guccio
当前离线
积分
1054
IP卡
狗仔卡
楼主
|
发表于 2002-12-12 09:10:33
|
显示全部楼层
我现在的问题是运行时间一长我的X就会莫名其妙的崩溃,退回到字符界面,所以我才会怀疑是内存消耗太多,那么照你们看这种情况是由于什么造成的呢?
回复
支持
反对
使用道具
举报
显身卡
jerboa
jerboa
当前离线
积分
345
IP卡
狗仔卡
发表于 2002-12-12 09:26:03
|
显示全部楼层
1.在bios里把系统内存自检打开,看内存是不是有问题。检查一下其它硬件,如CPU温度等。
2.检查显卡是否正常,如果可能的话,换另一个试试。
3.如果KDE有问题,试一下gnome,或者其它图形系统有没有相似的问题。
4.有可能是驱动不正常,更新或升级。
回复
支持
反对
使用道具
举报
显身卡
北南南北
北南南北
当前离线
积分
24302
IP卡
狗仔卡
发表于 2002-12-14 20:16:41
|
显示全部楼层
原理明白了。
jerboa兄,咱们是不是能自己写一个程序,然后来运行它。这样是不是可行?
我不会程序,请老兄指教
多谢`
回复
支持
反对
使用道具
举报
显身卡
jerboa
jerboa
当前离线
积分
345
IP卡
狗仔卡
发表于 2002-12-21 11:30:19
|
显示全部楼层
可以做,这样得修改2.4的内核。如果不修改核心,使用程序的话,必须得进入核心态,以进行slab链表指向的空间进行释放,因为系统内存管理是由核心管理的,但这样做的话,系统整体性能会下降的(前面已经说明slab算法的优点了),我感觉得不尝失。如果真要象windows那样的感觉话,采用以前2.2内核吧,这样符合windows转过来人的感觉。
回复
支持
反对
使用道具
举报
显身卡
Linuxfish
Linuxfish
当前离线
积分
6411
IP卡
狗仔卡
发表于 2002-12-21 18:13:51
|
显示全部楼层
没有必要修改吧,slab是算法上的进步,不要在意free所看到的数字,Windows下看到那些内存空闲只是安慰心理上的感觉,实际上都没有充分利用,空着就空着,浪费!而有的时候用再用一些内存释放软件反而常常会拖累速度,在Windows下加大缓存的优化效果很明显,让那些空闲的内存充分用其来。
回复
支持
反对
使用道具
举报
显身卡
KornLee
KornLee
当前离线
积分
6960
IP卡
狗仔卡
发表于 2002-12-21 23:23:02
|
显示全部楼层
厉害!
总感觉有的时候linux卸载内存的时候特慢~~~
嗷~~~原来是这么一回事呀!
我经过调整后留有115--123MB的内存空间.
那为什么每次启动系统的时候用FREE查看内存的容量总不一样呀?
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Perl | PHP | Python 脚本程序开发
LinuxSir 论坛管理
Mandriva Linux
小企鹅新闻图书馆
Slackware Linux
Linux 程序设计专题讨论
红旗 REDFLAG Linux
Java 程序设计开发讨论
Debian Linux
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表