浅谈下linux的内存机制
来源:互联网 发布:网络蜘蛛 重访策略 编辑:程序博客网 时间:2024/05/16 11:40
Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
各项指标:
--Mem
total1 物理内存总数: 3832M
used1 已使用的内存数: 2146M
free1空闲的内存数: 1685M
shared 当前废弃不用的内存数: 一般都是0
buffers 缓存内存数:177M (主要用来存放目录里面有什么内容,文件的属性以及权限等等)
cached 缓存内存数:1206M(用来记忆我们打开过的文件和程序)
-/+ buffers/cache
used2 已使用的内存数:763M
free2 空闲内存数:3069M
--Swap(虚拟内存)
分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生 出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。
计算公式如下:
total = used1 + free1
total = used2 + free2
used1 = buffers + cache +used2
free2 = free1 + buffers + cache
也就是说,其实free1内存就算很少也没事,你还要关注buffers 和cache值,相加才是最终的空闲内存。再换句话说,那就是,free1的内存降低,不能说这是内存使用率降低,应该说是内存利用率上升了。
windows和linux的内存机制最大的区别,就在于windows会给内存留一定空间,就算内存空闲也会让程序使用虚拟内存;而linux是将要使用的程序优先放进内存,提高读取速度。
windows的优势在于,启动新程序速度非常快,直接分配新内存就可以了。linux优势就在于,启动刚运行的程序或者读取之前的数据会非常快。
所以,这就是为什么windows会用来当做客户端,而linux用来当服务端的原因。
当遇见内存不足时候,其实有一个很简单粗暴的解决方法。那就是加内存条,如果一条不够,那就加2条。。
总结:
linux是内存被缓存,windows内存是被占用。
不算彩蛋的小彩蛋:
Linux操作系统的内存运行原理,很大程度上是根据服务器的需求来设计的,例如系统的缓冲机制会把经常使用到的文件和数据缓存在cached 中,linux总是在力求缓存更多的数据和信息,这样再次需要这些数据时可以直接从内存中取,而不需要有一个漫长的磁盘操作,这种设计思路提高了系统的整 体性能。
- 浅谈下linux的内存机制
- 浅谈 Linux下的零拷贝机制
- 浅谈Unix/linux下的内存管理
- 浅谈 Linux下的 共享内存
- 浅谈windows下消息机制和linux的异同
- 浅谈linux下malloc函数的内存管理
- Linux 的内存机制
- JVM内存管理的机制浅谈
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 浅谈Linux的内存管理机制
- 多线程 - 1
- access检查为空函数
- 一步一印的打印机行业,迎来三大发展趋势
- 黑盒测试五大测试阶段
- JS字符串替换-原始replace单个替换和自定义replaceAll全部替换
- 浅谈下linux的内存机制
- 八、10行代码建起你的网站
- Salesforce 的Cache玩法
- linux上GIT的使用
- JavaScript简介
- Pandas读取MongoDB数据库到DataFrame
- Sass的嵌套
- 使用Visio 2013 画跨职能流程图
- 使用ActionBar