为了账号安全,请及时绑定邮箱和手机立即绑定

Windows上的Git,“内存不足-malloc失败”

Windows上的Git,“内存不足-malloc失败”

Git
天涯尽头无女友 2019-11-11 14:19:47
遇到了存储库问题,并尝试了几乎所有可能的配置设置,例如。pack.WindowMemory等我相信有人已经将一个大文件检入到远程存储库中,现在每次我尝试将其拉入或推入时,GIT都会尝试将其打包并耗尽内存:Auto packing the repository for optimum performance. You may alsorun "git gc" manually. See "git help gc" for more information.Counting objects: 6279, done.Compressing objects: 100% (6147/6147), done.fatal: Out of memory, malloc failed (tried to allocate 1549040327 bytes)error: failed to run repack尝试了git gc和git repack的各种选项,但始终返回相同的错误。几乎放弃了,即将创建一个新的仓库,但我想先问一下:)
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

我在这里找到了对我有用的解决方案。


在.git / config文件(客户端和/或服务器)中,我添加了以下内容:


[core]

  packedGitLimit = 128m

  packedGitWindowSize = 128m


[pack]

  deltaCacheSize = 128m

  packSizeLimit = 128m

  windowMemory = 128m


查看完整回答
反对 回复 2019-11-11
?
UYOU

TA贡献1878条经验 获得超4个赞

自git-v2.5.0 (2015年8月)以来,git-for-windows(以前为MSysGit)

      提供了Pan.student注意到的64位版本。       在此答案中,我建议安装Cygwin 64位(提供64位Git版本)。


达到4GB的限制时,我Out of memory, malloc failed使用MSysGit遇到了类似的问题:


> git --version

git version 1.8.3.msysgit.0


> file path/Git/cmd/git

path/Git/cmd/git: PE32 executable for MS Windows (console) Intel 80386 32-bit


> time git clone --bare -v ssh://linuxhost/path/repo.git

Cloning into bare repository 'repo.git'...

remote: Counting objects: 1664490, done.

remote: Compressing objects: 100% (384843/384843), done.

remote: Total 1664490 (delta 1029586), reused 1664490 (delta 1029586)

Receiving objects: 100% (1664490/1664490), 550.96 MiB | 1.55 MiB/s, done.

Resolving deltas: 100% (1029586/1029586), done.

fatal: Out of memory, malloc failed (tried to allocate 4691583 bytes)

fatal: remote did not send all necessary objects


real    13m8.901s

user    0m0.000s

sys     0m0.015s

MSysGit达到4 GB屏障后崩溃


最后来自Cygwin的 git 64位修复了它:


> git --version

git version 1.7.9


> file /usr/bin/git

/usr/bin/git: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows


> time git clone --bare -v ssh://linuxhost/path/repo.git

Cloning into bare repository 'repo.git'...

remote: Counting objects: 1664490, done.

remote: Compressing objects: 100% (384843/384843), done.

remote: Total 1664490 (delta 1029586), reused 1664490 (delta 1029586)

Receiving objects: 100% (1664490/1664490), 550.96 MiB | 9.19 MiB/s, done.

Resolving deltas: 100% (1029586/1029586), done.


real    13m9.451s

user    3m2.488s

sys     3m53.234s

来自Cygwin的git 64位成功


仅供参考linuxhost:64位:


repo.git> git config -l

user.email=name@company.com

core.repositoryformatversion=0

core.filemode=true

core.bare=true


repo.git> git --version

git version 1.8.3.4


repo.git> uname -a

Linux linuxhost 2.6.32-279.19.1.el6.x86_64 #1 SMP Sat Nov 24 14:35:28 EST 2012 x86_64 x86_64 x86_64 GNU/Linux


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1630 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信