想必大部分人看到“Outof memory, mallocfailed”,第一反应肯定是内存不足,一般的电脑也就2G的RAM,如果是虚拟机也就几百M而已,而进入需要pull或push的git目录:gitcount-objects -v可以看到如下内容:
count: 7
size: 60
in-pack:2983280
packs: 1
size-pack:751489
prune-packable:0
garbage:0
in-pack需要近3个G的内存啊,这哪有内存给其使用。
目前网上给的方法是如下:
gitconfig --global pack.threads 1
gitconfig --global pack.deltaCacheSize = 128m
git config --globalpack.windowMemory 1024m
这样一来,应该是可以减小资源的占用,但对于大的git还是无济于事。
其实问题原因是需要一个Swap空间,原来我的系统安装时没有分配交换空间。
1添加交换文件
mkdir-p /opt/temp
dd if=/dev/zeroof=/opt/temp/swap bs=1024 count=4096000
(目录路径和大小自己看着办就好了)
2.创建交换空间
mkswap/opt/temp/swap
3.启动新增加的4G交换空间
swapon/opt/temp/swap
4.修改/etc/fstab,使新加的4G交换空间在系统重新启动后自动生效
echo"/opt/temp/swap swap swap defaults 0 0" >>/etc/fstab
5.看看swap大小free-m