结帐时git内存不足

时间:2015-12-18 16:51:11

标签: git realloc

我克隆了一个大型回购并且出错(经过多次尝试)

  

克隆成功,但结帐失败

尝试使用

解决此问题
git checkout -f HEAD

错误回来了

  

致命:内存不足,realloc failed2

我已经设置了一些内存限制,因为克隆也会因设置

而遇到问题
git config pack.WindowMemory 256m && git config pack.packSizelimit 256m

根据以下来自Punit Vara(下文)的建议,我还将.git / config编辑为:

[core]
packedGitLimit = 128m
  packedGitWindowSize = 128m

[pack]
  deltaCacheSize = 128m
  packSizeLimit = 128m
  windowMemory = 128m

我尝试将这些值更改为:128m,256m,512m,1024m。这不适合我。我仍然得到同样的错误,似乎出现在41%。

任何人都有这方面的经验或任何想法出错的原因和/或可以采取哪些措施来解决这个问题?谢谢。

4 个答案:

答案 0 :(得分:5)

我的服务器更新到64Bit架构后,遇到了同样烦人的问题。 git的操作系统内存限制为600米。

core.preloadIndex = false

终于为我做了伎俩。自git 2.1版以来它默认为true

答案 1 :(得分:1)

我收到此错误消息:"致命:内存不足,realloc失败2 "在尝试使用git add --all时。 原因是我尝试添加一个非常大的csv文件(> 1.6 GB)。 Git / Github不允许上传这么大的文件。作为解决方案,您可以将文件放在gitignore上或将文件移动到另一个未连接到git的目录。

答案 2 :(得分:0)

试试这个:

git gc --auto --prune=today --aggressive 
git repack 
git config --global http.postbuffer 524288000 
git config --global pack.windowMemory 256m

git push Out of memory, malloc failed上找到。

答案 3 :(得分:0)

设置以下参数以解决此问题:

  

<强> $hint .= ", $name";

     

在单个映射操作中映射到内存的pack文件的字节数。较大的窗口大小可能允许您的系统更快地处理较少数量的大包文件。较小的窗口大小会对操作系统内存管理器的调用增加产生负面影响,但在访问大量大包文件时可能会提高性能。

     

如果在编译时设置了NO_MMAP,则默认为 1 MiB ,否则32位平台上为32 MiB,64位平台上为1 GiB。   这对所有用户/操作系统都应该是合理的。您可能不需要调整此值。

     

<?php if ($q !== "") { $q = strtolower($q); $len=strlen($q); $found = array(); foreach($a as $name) { if (stristr( substr($name, 0, $len),$q)) { array_push($found, $name); } } print_r($found); } ?>

     

从包文件同时映射到内存的最大字节数   如果Git需要一次访问超过这么多字节来完成操作,它将取消映射现有区域以回收进程中的虚拟地址空间。

     

在32位平台上默认为 256 MiB ,在64位平台上默认为8 GiB   除了最大的项目外,这对所有用户/操作系统都应该是合理的    您可能不需要调整此值。

<强> core.packedGitWindowSize

以下是我可以想到并且可能与您的案例相关的配置值的完整列表:

core.packedGitLimit