免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10847 | 回复: 17
打印 上一主题 下一主题

Linux内存管理机制的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-07 17:56 |只看该作者 |正序浏览
现象:有台服务器,在长时间运行后,用top看系统物理内存free只剩下20MB左右,但是cached占了整个系统内存的80%左右,自己的应用进程本身占有的内存并没有什么变化!
一种解释说法:linux对内存的使用上的机制导致,只要used-buffer-cached不是很大,就没有问题!
针对这种说法我做了测试,calloc一块很大的内存,然后写一些数据,然后释放掉内存,cached和buff没有任何变化,used和free在变化!和以上结论有些出入?
疑问:什么情况下,buff会涨?什么情况下,cache会涨?什么时候,cached或buffer的内存会还给系统?

[ 本帖最后由 ljok30 于 2008-7-7 23:35 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2010-06-29 18:30 |只看该作者
Linux的内存使用策略是只要有空余的内存,就尽量利用起来,DRAM空着也要耗电不是?
现在Windows 7也有样学样,尽量占光内存了。XP则用的原来的分配策略。
cache住的内存当程序进行分配请求时就会归还了,不用紧张。

论坛徽章:
0
17 [报告]
发表于 2010-06-29 17:46 |只看该作者
目前我们的服务程序,需要大量的查询数据库操作,而且使用了短连接,即连接数据库,查询, 断开数据库,造成 ...
rain_fish 发表于 2010-04-29 09:38



    又看到了这篇文章。把这个问题的缘由写出来供大家参考。
我们的服务程序cache增长的原因是写了一个很大的文件,这个文件的长度一直在增长,cache也在增长,直到达到内存最大值就不长了。

论坛徽章:
0
16 [报告]
发表于 2010-06-29 17:32 |只看该作者
回一下#11的问题

两变量a,b
执行a = a+b;
      b = a-b;
则可

论坛徽章:
0
15 [报告]
发表于 2010-04-29 11:23 |只看该作者
回复 14# doofy


    必须得

论坛徽章:
0
14 [报告]
发表于 2010-04-29 10:42 |只看该作者
挖的很有技术含量!

论坛徽章:
0
13 [报告]
发表于 2010-04-29 09:38 |只看该作者
目前我们的服务程序,需要大量的查询数据库操作,而且使用了短连接,即连接数据库,查询, 断开数据库,造成了cached一直在增加,不知道有没有人碰到这样的情况,怎么不让cached增加?

论坛徽章:
0
12 [报告]
发表于 2008-07-09 13:14 |只看该作者

论坛徽章:
0
11 [报告]
发表于 2008-07-08 22:16 |只看该作者
原帖由 rainysky 于 2008/7/8 09:25 发表
cache应该是由内核自动管理的,对用户来说,cache的memory应该可以被当作是free的memory吧。
阈值是肯定有的,如果free为0,那么再做其它事就难了,呵呵。就像不用一个临时变量要交换两个数的值,


有谁知道:不用一个临时变量要交换两个数的值。
请解释如何实现,谢谢。

论坛徽章:
0
10 [报告]
发表于 2008-07-08 21:35 |只看该作者
你做free时,只是告诉系统,这块空间我不要了。至于何时被真正回收,那是系统的事。由系统的垃圾回收机制的几个算法决定。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP