os内存使用管理之linux篇
2013-12-03 12:35
316 查看
os内存使用管理之linux篇
看一下LINUX内存机制是怎么运作的,了解了基础知识,对于理解和操作是有很大帮助的。
抛砖引玉:
Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经
被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满
。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处
。
你可以用 free 指令查看一下输出,用 used 减去 buffer 和 cache,才是你运行中的程序所占用的空
间,举例如下:
total used free shared buffers cached
Mem: 516300 504264 12036 0 88396 236792
-/+ buffers/cache: 179076 337224
Swap: 1544184 21276 1522908
504264 - 88396 - 236792 = 179076
也就是说目前正在被使用的内存只有 179 兆。不要被 504兆的used吓住了。
windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好
处是,启动新的程序比较快,直接分给它些空闲内存就可以了,而linux下呢?由于内存经常处于全部被
使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。
另外,内存是随机访问的,也就是说,无论你的内存占用了多少,数据的存取时间都是相同的,跟硬盘
不同。
linux 内存使用高原因 2009-09-05 10:40:02| 分类: Linux | 标签: |字号大
中
小 订阅
linux 机子新装内存used偏高...
往往给出这样的结果,怀疑内存用了90%:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的
消耗情况。在我看来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些
程序去使用虚拟内存,目的是在Windows下启动新程序时,直接分配空闲的物理内存,这样子新程序启动
速度就较快,而Linux则不然。
而在Linux下,使用top命令看到内存占用情况:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588
虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前
进程实际占用内存是636M,而可用空闲(free)内存为3.4G。
可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不
会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启
过的程序、或是读取刚存取过得数据会比较快。
如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的
方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使
用,也可以认为它是空闲的。
因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用
,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。
未完待补充。。。。。。。
以上整理来之网上。
看一下LINUX内存机制是怎么运作的,了解了基础知识,对于理解和操作是有很大帮助的。
抛砖引玉:
Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经
被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满
。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处
。
你可以用 free 指令查看一下输出,用 used 减去 buffer 和 cache,才是你运行中的程序所占用的空
间,举例如下:
total used free shared buffers cached
Mem: 516300 504264 12036 0 88396 236792
-/+ buffers/cache: 179076 337224
Swap: 1544184 21276 1522908
504264 - 88396 - 236792 = 179076
也就是说目前正在被使用的内存只有 179 兆。不要被 504兆的used吓住了。
windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好
处是,启动新的程序比较快,直接分给它些空闲内存就可以了,而linux下呢?由于内存经常处于全部被
使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。
另外,内存是随机访问的,也就是说,无论你的内存占用了多少,数据的存取时间都是相同的,跟硬盘
不同。
linux 内存使用高原因 2009-09-05 10:40:02| 分类: Linux | 标签: |字号大
中
小 订阅
linux 机子新装内存used偏高...
往往给出这样的结果,怀疑内存用了90%:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的
消耗情况。在我看来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些
程序去使用虚拟内存,目的是在Windows下启动新程序时,直接分配空闲的物理内存,这样子新程序启动
速度就较快,而Linux则不然。
而在Linux下,使用top命令看到内存占用情况:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588
虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前
进程实际占用内存是636M,而可用空闲(free)内存为3.4G。
可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不
会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启
过的程序、或是读取刚存取过得数据会比较快。
如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的
方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使
用,也可以认为它是空闲的。
因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用
,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。
未完待补充。。。。。。。
以上整理来之网上。
相关文章推荐
- linux安装sybase注意事项
- linux服务器无法识别网卡解决办法
- centos6.4搭建lnmp服务(转载)
- linux下查看磁盘分区,文件系统,磁盘文件系统的命令
- Linux多线程编程入门-同步机制-信号量
- Linux 操作系统位数(32or64)识别
- 每天一个linux命令(44):top命令
- linux下socket keep alive讲解
- 非常好的Linux教程,让你的linux之路更通畅
- ffmpeg在linux安装实现视频转换
- LInux下如何安装ffmpeg
- linux-3.2.36内核启动4-setup_arch中的内存初始化3(arm平台 bootmem_init源码分析)
- linux 和windows下合并文件
- linux-3.2.36内核启动3-setup_arch中的内存初始化2(arm平台 分析建立页表)
- linux 下core 文件调试方法
- linux-3.2.36内核启动2-setup_arch中的内存初始化1(arm平台 分析高端内存和初始化memblock)
- linux-3.2.36内核启动1-启动参数(arm平台 启动参数的获取和处理,分析setup_arch)
- centos install kvm
- 在centos6.3_64bit 上的GO语言开发环境搭建
- 新装linux系统最基本设置