GIT:致命:内存不足,malloc失败(试图分配889192448字节)

时间:2016-12-13 12:16:30

标签: git

将项目推送到tfs GIT时出现此错误。

  

致命:内存不足,malloc失败(试图分配889192448   字节)

9 个答案:

答案 0 :(得分:5)

我通过减小postbuffer的大小来解决此问题:

[http]
    postbuffer = 5m

答案 1 :(得分:3)

在Unix上编辑.git/config或在Windows上编辑.gitconfig并修改以下参数。通过运行git config --list --show-origin,您可以找到您的gitconfigs。

[core]
  packedGitLimit = 128m
  packedGitWindowSize = 128m

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

[http]
  postbuffer = 5m

如果您通过CLI使用git,请确保在更改此设置后重新启动shell /终端。

答案 2 :(得分:2)

我通过向我的服务器添加512MB的内存来解决这个问题,因此我将其扩展到2GB

答案 3 :(得分:1)

我在Windows上遇到了同样的问题,用checkout另一个分支执行。最后,由于内存不足错误("尝试分配......"等),我无法拉取或取出项目。我通过增加git pack和核心限制来做到这一点,但它对我没有用。最后,我从计算机中删除了git并再次安装。问题解决了。

答案 4 :(得分:1)

根据我的经验,发生这种情况的原因有几个:

  1. 最常见的是,有一个或多个文件太大而Git无法处理。以我的经验,这通常是.sql,.zip,.gz或媒体文件。但是,仅从存储库中删除它们就无法解决问题,因为它在实际的Git历史记录中(在本地计算机和/或要从中拉出的远程服务器上的.git文件夹中)。我还没有找到一种将其从所有Git历史记录中完全删除的方法,因此我通常创建一个新的存储库,在该新存储库中创建一个.gitignore文件,然后将文件复制到那里。这不是一个好的解决方案,但这是我最好的解决方案,直到我找到一种将其从所有历史记录中完全删除的方法为止。
  2. 当服务器RAM /内存不足时,也会发生这种情况。 (如果您不知道如何增加RAM,那么您可能不应该使用Git,而应该聘请专业的开发人员来协助您。)

我并不是说这些是唯一的可能性。但是以我的经验,至少有数百个存储库,每次都是这两个问题之一。通常是#1。

要查看存储库中最大的文件,请执行以下命令:ls -lS

答案 5 :(得分:0)

我通过关闭使用大量内存(visual studio,sql server)并再次推送的应用程序来修复此问题

答案 6 :(得分:0)

因此,它基本上需要的是889192448字节(约889MB)的可用内存。 发生此错误的原因有两个

  • 当RAM的空间不足时。
  • 为Git设置的内存限制不符合要求。

要检查基于Linux的系统上的可用内存。

<table>
    <thead>
        <tr>
            <th>NO</th>
            <th>Date</th>
            <th>Check In</th>
            <th>Check Out</th>
            <th>Time Long</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2019-03-01</td>
            <td>X</td>
            <td>X</td>
            <td>X</td>
        </tr>
        <tr>
            <td>2</td>
            <td>2019-03-02</td>
            <td>11:56</td>
            <td>17:25</td>
            <td>5:25</td>
        </tr>
        <tr>
            <td>3</td>
            <td>2019-03-03</td>
            <td>X</td>
            <td>X</td>
            <td>X</td>
        </tr>
        <tr>
            <td>4</td>
            <td>2019-03-04</td>
            <td>08:00</td>
            <td>16:00</td>
            <td>8:00</td>
        </tr>
        <tr>
            <td>5</td>
            <td>2019-03-05</td>
            <td>X</td>
            <td>X</td>
            <td>X</td>
        </tr>
    </tbody>
</table>

如果可用内存大于所需的内存,那么您无需在此处做任何事情,否则您需要添加交换内存以增加RAM上的可用空间。

如果RAM的可用内存已经用于所需的内存,那么您需要配置git来利用它。您可以通过以下方式做到这一点:

free -h

希望这会有所帮助。

答案 7 :(得分:0)

我在使用具有1G RAM的Ubuntu时遇到了相同的问题,并且添加了一些交换空间(增加了1G)。它正在工作。

答案 8 :(得分:-1)

经过长时间的搜索并没有得到解决方案,我沮丧地将“999999999”分配给postbuffer,它创造了奇迹。 ;)

[http]
    postbuffer = 9999999999

试试这个也可能对你有用。祝好运。 :)