浅谈下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总是在力求缓存更多的数据和信息,这样再次需要这些数据时可以直接从内存中取,而不需要有一个漫长的磁盘操作,这种设计思路提高了系统的整 体性能。








 


0 0
原创粉丝点击