Mac下定时任务清理内存
Mac下定时任务清理内存
康州牧码人 发表于2年前
Mac下定时任务清理内存
  • 发表于 2年前
  • 阅读 313
  • 收藏 17
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 使用mac的小伙伴都知道,打开的程序多了用着用着,mac的内存就会飙升,如果你装有类似“腾讯电脑管家”,这货里面有个内存管理功能,类似于360的内存清理的浮动球,会发现他经常99%

    使用mac的小伙伴都知道,打开的程序多了用着用着,mac的内存就会飙升,如果你装有类似“腾讯电脑管家”,这货里面有个内存管理功能,类似于360的内存清理的浮动球,会发现他经常99%....虽然说,mac系统不会卡,很少会出现点击了没反应,但是你看着一个logo在Dock跳呀跳跳呀跳,也是超级不爽的嘛...

    据说,这是mac系统会缓存一部分的数据,增加下次访问速度;  不过,鬼知道他缓存的是啥,鬼知道他什么时候释放,他怎么知道我下一次需要啥文件,问都不问就缓存下来了.....

    

    其实也不是开很多程序,以我为例哈,我是做基于H5技术做hybrid的码农;首先,编辑器要打开吧,WebStorm....浏览器要打开吧,chrome....打包用的IDE,xcode....好,就这些,没有了,可这么几个应用,mac就经常会飙到99%的内存占用。

    

     在google搜索一顿,发现mac中有个命令叫 purge,使用这个命令可以清空系统内存;我的天,这就是我需要的,给他上个sudo,执行 sudo purge,内存占用马上下来了;那么问题又来了,这内存占用肯定是“野火烧不尽,春风吹又生”的,但是我总不能隔一会就手动在terminal里面去执行一次sudo purge呀...这不是更崩溃吗,还不如不清理呢....

    所以,聪明的人们发现了重复的劳动力的惯性任务都可以使用定时任务去完成,例如备份日志,备份数据库,监控这类;所以,我也打算使用定时任务来清除内存;

    MAC上定时任务可以使用launchctl或者crontab,我个人选择了launchctl;

    使用launchctl只需要以下几步,我会直接贴代码并且带上简单描述:    

        一、编写plist文件 com.xxxxxx.xxxx.plist文件 ,把这个文件丢到/Library/LaunchAgents下

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
  <dict>
    <!-- 名称,要全局唯一 -->
    <key>Gavin_Clear_RAM</key>
    <string>com.xxxxxx.xxxxx</string>

    <!-- 要运行的程序 路径 -->
    <key>Program</key>
    <string>/Users/xxxx/xxxxx/sh_file/clear.sh</string>

    <!-- 运行间隔,与StartCalenderInterval使用其一,单位为秒s -->
    <key>StartInterval</key>
    <integer>300</integer>

    <!-- 标准输入文件 -->
    <key>StandardInPath</key>
    <string>/Users/xxxxxx/xxxxx/sh_file/run-in.log</string>

    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/xxxxx/xxxx/sh_file/run-out.log</string>

    <!-- 标准错误输出文件 -->
    <key>StandardErrorPath</key>
    <string>/Users/xxxxx/xxxx/sh_file/run-err.log</string>

  </dict>  
</plist>

        有几个其他参数我没用到,所以省略了,有需要的话,可以找一下下面参考的文章

        二、编写bash代码 clear.sh:这个比较简单,我就是执行sudo purge,然后打印日志到某个文件

#!/bin/bash

sudo purge 

#文件路径,不需要日志可以吧日志注释掉
echo "clear success at :"+`date "+%Y/%m/%d %X"` >> /Users/xxxx/xxxx/sh_file/clear 

    这里面有两个点需要注意:

        1、sudo purge这个会让你输入管理员密码,所以你必须让这个指令不用输入密码;所以,请自行完成google/百度 :mac sudo 命令 不需要密码   

        2、必须让clear.sh是可执行的,给足够的权限 chmod 777 clear.sh

        三、把第一步创建的plist文件丢到/Library/LaunchAgents下,根据自己的需要,执行以下命令,一般是1,5就OK了,1执行,5查看有木有,satrt可以看到效果

1.launchctl load   /Library/LaunchAgents/com.xxxxx.xxxx.plist #加载plist文件
2.launchctl unload /Library/LaunchAgents/com.xxxxx.xxxx.plist #卸载
3.launchctl start  /Library/LaunchAgents/com.xxxxx.xxxx.plist #立即运行,先load,在执行start
4.launchctl stop   /Library/LaunchAgents/com.xxxxx.xxxx.plist #立即停止
5.launchctl list | grep xxxx #查看列表

    

    好!就是酱紫!时间你自己设置就好!我比较喜欢60s执行一次,妥妥的!

 

 

参考:

代码:https://github.com/niezw/crontab_to_clear_mac_arm

具体关于launchctl的其他操作,可以看看:https://my.oschina.net/shede333/blog/470377

sudo不需要密码:http://www.examw.com/os/windows/133193/

 



标签: mac arm 内存清理
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 23
码字总数 10993
×
康州牧码人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: