为了庆祝我团购8G231成功,分享一下我之前写的用来解决“Mac系统吃内存太严重”的Shell脚本。
之前用过13寸的pro,现在用的是15寸的pro,即将用上13寸的8G版air,我是程序员,所以总开一大堆程序,曾经一度被Mac系统的内存机制搞的很郁闷,动不动内存就被啃光了。
一怒之下,我就自己写了一小段Shell脚本,用来解决这个内存问题。
脚本内容为:
#!/bin/bash
#check and clean memory
#Powered by YangBalu
maxmeminc=300
maxmemfree=300
memsizenow=vm_stat | awk '/page size/ {print $8}'
let “memincnow=vm_stat | awk '/Pages inactive/ {print($3-0)}'
* $memsizenow / 1024 / 1024”
let “memfreenow=(vm_stat | awk '/Pages free/ {print($3-0)}'
+ vm_stat | awk '/Pages speculative/ {print($3-0)}'
) * $memsizenow / 1024 / 1024”
if [ $memincnow -gt $maxmeminc -a $memfreenow -lt $maxmemfree ] ; then
purge
脚本结束。 把脚本随意命名为sh文件,在Cron里添加一条每分钟运行该sh文件的记录。 然后就没问题了。 提示:这个脚本需要用到“purge”命令,我不知道没装过Xcode的是否有这个命令,如果没有的话就找一个……
8g搞程序怎么样?我现在6g,不过不是ssd,写个代码啥,开个ps就卡的就啥一样,很担心8g不够
@战斗猪 8g够用。
画蛇添足…都不搞清楚unix内存管理
@rickqian123 劳烦您指点一下?
确实是画蛇添足…
看内存闲着就高兴啊
说搞不清楚UNIX内存管理的人麻烦指点一下。 我个人感觉osx有内存泄漏,那个非活跃内存越来越大。
能指点一下原理是什么吗?
mac 内存管理 用这个关键词搜索,google baidu都有
righqian123正解,mac的inactive有点像linux下面的cached,没必要purge
由于帖子已经无法编辑,所以统一在此楼回复以下,如果@蓝子 看到这个回复的话,麻烦帮我把这段回复编辑进主帖,先行谢过。 感谢各位说我“画蛇添足”的“大神”们的点拨。 但是我只知道我经常碰到这么一种情况:明明不活跃内存还有5G之多,Mac系统却非要狂吞吐我的硬盘,从而导致我的系统异常缓慢,此时我只能purge。 而且我身边的用Mac的朋友们也有不少碰到过同样的问题。 而且我搜索了网上也有不少的人有相同的抱怨。 当然,我向“大神”们承认,这是我以及与我有相同遭遇的人们的人品问题,与“神”一般的Mac系统没有半毛钱关系,所以,“大神”们,不用再批评我了,我知道“错”了。
另:和我朋友同样问题的小白们,如果你们也发现系统超级慢,但是非活跃内存却很大,那你应该是适合用我这段代码的,有不懂的提出来,咱们做小白的集体探讨。
再次重申:没有碰到过该问题并且坚信Mac的内存管理机制是神并且只会说“画蛇添足”的“大神”们,我的帖子请不起你们来赏光,谢谢。当然,如果你们是来提供解决方案的,我热烈欢迎。
上面的回复中有两组错别字,分别是第一段的“以下”应为“一下”,倒数第二段的“和我朋友同样问题的小白们”应为“和我碰到同样问题的小白们”。 特此更正。
怎么说呢,这种问题不用太在意,我觉得你碰到的是一些软件问题或者是Mac的问题。
你那个现像我原来在用realplayer for mac的时候碰到过,非活跃内存基本把所有内存占满了,系统出现非常慢。你其实是只需要在这种情况下purge,其它时候不用追求“可用空间”。
@rickqian123 我并没有追求“可用空间”,我的内存是8G,请仔细看我的Shell代码,代码里的规则是“当可用内存不足300M,并且,注意,这里是并且,并且非活跃内存大于300M,此时才会purge”。 所以,这并不是追求“可用空间”,而是在逼不得已的时候去自动执行purge。
我的是10G,现在发现,不够啊,看来16G内存标配才行