久々に...と、手元の Git ローカルリポジトリを「git gc --aggressive」で最適化・圧縮を実行したところ、下記のエラーメッセージで停止してしまった。
> git gc --aggressive
Counting objects: 15602, done.
Delta compression using up to 8 threads.
warning: suboptimal pack - out of memory
fatal: Out of memory, malloc failed (tried to allocate 2641409
bytes)
error: failed to run repack
たしかに、物理メモリ 8GB 積んでいるところ、git gc を実行するとみるみるうちに消費メモリが増えていって、最終的に "out of memory" となる。
ネットで情報をあさったところ、下記スレッドを発見。
http://stackoverflow.com/questions/8214321/git-gc-using-excessive-memory-unable-to-complete
それでは、ということで、そのままコンソールから Git の設定ファイルをテキストエディタで開き、
notepad2 "%userprofile%\.gitconfig"
以下の2行を書き足して保存・終了。
[pack]
threads = 4
すなわち、先のエラーメッセージを見るとわかるように、git gc は、圧縮処理に8スレッドで並行処理していたわけである(Intel Corei7-3770)。
そこで、上記のとおり Git の設定ファイルにて、圧縮処理には4スレッドまでしか使わないこと、と制限を設けることで同時に実行される処理数を減らし、結果として消費メモリが増えすぎないようにするのが狙いだ。
上記設定で再度 git gc -- aggressive を実行したところ、辛くも 5GB 少々のメモリ消費で留まって、処理完遂した。