IntelliJ Idea在OS X平台上的缓存优化

用了很久的一段小东西,因为昨天升级10.9GM之后修改的系统文件被覆盖,今天重做时忘记改文件权限导致一直报错。

* 此方式会修改系统文件,请酌情使用。

2012年的13' MBP,因为Retina超出预算,而选择了低配版。SSD居高不下,自己换装了相对更加实惠的16G内存。想着IntelliJ运行时创建的一大堆缓存文件,再看看那经常连一半都用不到的16G内存,怎么算都觉得浪费,于是便打算把IntelliJ的缓存放到内存里去。

大体思路是:

1. 创建内存磁盘

2. 把缓存文件复制到内存磁盘

3. 修改IntelliJ调用缓存的路径

4. 内存磁盘卸载时把修改后的缓存文件同步回原位置以便下次使用

IntelliJ13的缓存文件位于"主目录/Library/Caches/IntelliJIdea13"(不同版本文件夹不同,看版本号),先把文件夹重命名为"IntellijIdea13_disk"。

编写创建内存磁盘脚本方便以后调用

#>>>> m-cache_idea13

#!/bin/sh
name="IntellijIdea13"
src="/Users/`users`/Library/Caches/${name}_disk"
link="/Users/`users`/Library/Caches/$name"
disk="cache_$name"
dest="/Volumes/$disk/$name"
[[ -e "$dest" ]] && exit 1
diskutil erasevolume HFS+ "$disk" `hdiutil attach -nomount ram://4096000`
cp -Rp "$src" "$dest"
ln -sfh "$dest" "$link"
cp /opt/config/umount.hook.idea13 "/Volumes/$disk/umount.hook"
cp /opt/config/umount.post_hook.idea13 "/Volumes/$disk/umount.post_hook"

#<<<< end m-cache_idea13

在 "/opt/config"目录中创建文件 umount.hook.idea13,该脚本在内存磁盘被卸载之调用

#>>>> umount.hook.idea13

#!/bin/sh
src="$@/IntellijIdea13/"
dest="/Users/`users`/Library/Caches/IntellijIdea13_disk"
rsync -rptog --delete $src $dest

#<<<< end umount.hook.idea13

在 "/opt/config"目录中创建文件 umount.post_hook.idea13,该脚本在内存磁盘被卸载之调用

#>>>> umount.post_hook.idea13

#!/bin/sh
src="/Users/`users`/Library/Caches/IntellijIdea13_disk"
dest="/Users/`users`/Library/Caches/IntellijIdea13"
ln -sfh "$src" "$dest"

#<<<< end umount.post_hook.idea13

以上两个脚本会被复制到内存磁盘中在卸载时调用,其实可以只用一个文件,分开只是为了验证一下给卸载磁盘时新增的两个事件是否能够正确运行。

修改系统文件,将 /sbin/umount 文件重命名为 /sbin/umount.orig,如果不知道怎么修改系统文件,那么这篇文章可能不适合你阅读,请不要继续下面的操作

创建新的umount脚本

#>>>> umount

#!/bin/sh
hook_file="$@/umount.hook"
post_hook_file="$@/umount.post_hook"

temp_post_hook=""
if [ -x "$post_hook_file" ]; then
    temp_post_hook="/tmp/`basename $@`.$RANDOM.post_hook"
    cat "$post_hook_file" > "$temp_post_hook"
    chmod a+x "$temp_post_hook"
fi

[[ -x "$hook_file" ]] && "$hook_file" $@

umount.orig "$@"

if [[ "$temp_post_hook" != "" && -x "$temp_post_hook" ]]; then
    "$temp_post_hook" $@
    rm "$temp_post_hook"
fi

#<<<< end umount

赋予umount脚本 root:wheel 644权限

完成。

执行m-cache_idea13将缓存放入内存磁盘,并且通过任何方式弹出磁盘时,已修改内容会被同步回磁盘缓存。另外为所有加载的磁盘映像增加了回掉脚本,加载磁盘根目录的umount.hook脚本会在卸载前调用,umount.post_hook脚本会磁盘卸载之后调用。

PS. 10.9GM Launchpad双指滑动不畅,测试不给力啊

-= THE END =-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值