Подтвердить что ты не робот

Git в Windows, "Недостаточно памяти - malloc failed"

У вас возникли проблемы с репозиторией и попробовали почти все возможные настройки конфигурации, обнаруженные там, например. pack.WindowMemory и т.д. и т.д.

Я считаю, что кто-то проверил в большом файле удаленный репозиторий, и теперь каждый раз, когда я пытаюсь тянуть или нажимать на него, GIT пытается упаковать его и исчерпать память:

Auto packing the repository for optimum performance. You may also
run "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 с различными параметрами, но сохраняют ту же ошибку.

Почти отказался и только что создал новое репо, но подумал, что сначала спрошу:)

4b9b3361

Ответ 1

Я нашел решение Здесь, которое сработало для меня.

В файле .git/config (клиент и/или сервер) я добавил следующее:

[core]
  packedGitLimit = 128m
  packedGitWindowSize = 128m

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

Ответ 2

Для справки (вы, возможно, уже видели это), дело msysgit, связанное с этой проблемой, это билет 292.

Это предлагает несколько обходных решений:

Чтобы отключить дельта-сжатие для определенных файлов, в .git/info/attributes добавьте:

*.zip binary -delta

От Страница руководства Gitattributes:

Дельта-сжатие не будет пытаться для blob для путей, для атрибута delta установлено значение false.


Возможно, более простым обходным путем было бы как-то reset историю до того, как этот большой файл совершит, и переделать другие коммиты оттуда.

Ответ 3

EDIT: & emsp; Поскольку git -v2.5.0 (Aug/2015), git-for-windows (ранее MSysGit)
& ЕПРС; & ЕПРС; & ЕПРС; предоставляет 64-битные версии, как заметил Pan.student.
& ЕПРС; & ЕПРС; & ЕПРС; В этом ответе я советовал установить Cygwin 64-битные (с поддержкой 64-битной версии Git).


Я получил аналогичную проблему Out of memory, malloc failed, используя MSysGit при достижении барьера 4 ГБ:

> 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 crashing after reaching 4 GB barrier

Наконец Git 64 бит из Cygwin исправить:

> 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

git 64 bits from Cygwin succeeded

FYI на linuxhost 64 бит:

repo.git> git config -l
[email protected]
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

Если мой ответ не устраняет проблему, вы также можете проверить эти страницы:

Ответ 4

Это сработало для меня, но мне пришлось установить параметры через командную строку, используя:

git --global core\pack [param] value