结帐时git内存不足

Posted

技术标签:

【中文标题】结帐时git内存不足【英文标题】:git out of memory on checkout 【发布时间】:2016-03-25 10:34:41 【问题描述】:

我克隆了一个大型 repo,但出现错误(经过多次尝试)

克隆成功,但结帐失败

当试图解决这个问题时

git checkout -f HEAD

返回错误

致命:内存不足,重新分配失败2

我已经设置了一些更高的内存限制,因为克隆也遇到了问题

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% 的相同错误。

任何人都有这方面的经验或知道哪里出了问题和/或可以做些什么来解决这个问题?谢谢。

【问题讨论】:

***.com/questions/10292903/… 谢谢,但这并没有解决问题。我尝试了不同的值,即 256m、512m 和 128m,但我仍然得到相同的错误。错误似乎总是在同一点,41%。 我想是时候git fsck了。我希望这个存储库不包含唯一数据。 Git fsck:100% 目录,100% 对象。 因为你没有打包,只是阅读包。*配置值应该无关紧要。它是哪个版本的 git,您尝试过最新的版本吗?听起来值得向作者报告 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

core.preloadIndex = false

终于为我成功了。自 git 版本 2.1 起默认为 true

【讨论】:

【参考方案3】:

设置以下参数来解决这个问题:

core.packedGitWindowSize

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

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

core.packedGitLimit

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

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


But sometimes you do need to set those values

这是一个完整的配置值列表,我能想到并可能与您的情况相关:

[http]
    postbuffer = 524288000
[pack]
    threads = 1
    deltaCacheSize = 1024m
    packSizeLimit = 1024m
    windowMemory = 1024m
[core]
    packedGitLimit = 1024m
    packedGitWindowSize = 1024m

【讨论】:

【参考方案4】:

试试这个:

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。

【讨论】:

感谢您的帖子。刚才试过这个。没用。

以上是关于结帐时git内存不足的主要内容,如果未能解决你的问题,请参考以下文章

Windows 下的 git svn clone large repo:内存不足 - 不是大文件问题

JAVA软件运行时,内存不足

C# graphics图像复制时提示内存不足

无法收听本地主机,内存不足

java内存不足是怎么回事

C++ 优先队列push()时,出现内存不足,怎么办,能又啥办法解决吗