Git вне памяти при оформлении заказа
Я клонировал большое репо и получил ошибку (после нескольких попыток)
Клон преуспел, но проверка завершилась неудачно
При попытке исправить это с помощью
git checkout -f HEAD
появляется ошибка
Fatal: Недостаточно памяти 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%.
У кого-нибудь есть опыт с этим или с какой-либо идеей, где это происходит неправильно и/или что можно сделать для решения этой проблемы? Благодарю.
Ответы
Ответ 1
Я столкнулся с такой же неприятной проблемой после обновления моего сервера до архитектуры 64Bit. Предел памяти ОС для git составлял 600 м.
core.preloadIndex = false
наконец, помогло. По умолчанию он равен true, поскольку git версия 2.1
Ответ 2
Попробуйте следующее:
git gc --auto --prune=today --aggressive
git repack
git config --global http.postbuffer 524288000
git config --global pack.windowMemory 256m
Найдено на git нажатие Недостаточно памяти, malloc не удалось.
Ответ 3
Задайте следующие параметры, чтобы исправить эту проблему:
core.packedGitWindowSize
Количество байтов файла пакета для отображения в память в одной операции сопоставления. Большие размеры окон могут позволить вашей системе быстрее обрабатывать меньшее количество файлов большого пакета. Меньшие размеры окон негативно скажутся на производительности из-за повышенных вызовов диспетчера памяти операционных систем, но могут повысить производительность при доступе к большому количеству больших файлов пакетов.
Значение по умолчанию 1 MiB, если во время компиляции было установлено NO_MMAP, в противном случае 32 MiB на 32-разрядных платформах и 1 GiB на 64-разрядных платформах.
Это должно быть разумным для всех пользователей/операционных систем. Вам, вероятно, не нужно настраивать это значение.
core.packedGitLimit
Максимальное количество байтов для одновременного отображения в памяти из файлов пакетов.
Если для Git требуется получить доступ к более чем одному из этих байтов сразу, чтобы завершить операцию, он будет отключать существующие регионы для восстановления виртуального адресного пространства внутри процесса.
По умолчанию используется 256 MiB на 32-битных платформах и 8 GiB на 64-разрядных платформах.
Это должно быть разумным для всех пользователей/операционных систем, за исключением крупнейших проектов.
Вам, вероятно, не нужно настраивать это значение.
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
Я получил это сообщение об ошибке: "Fatal: Out of memory, realloc failed2" при попытке использовать git add --all
. Причина в том, что я попытался добавить очень большой файл csv ( > 1,6 ГБ). Git/Github не позволяет загружать такой большой файл. В качестве решения вы можете поместить файл в gitignore или перенести файл в другой каталог, не подключенный к git.