1

これは、valgrind がクラッシュしてアプリのプロファイリングを停止したときに表示されるメッセージです。

    ==16317== 
    ==16317==     Valgrind's memory management: out of memory:
    ==16317==        newSuperblock's request for 4194304 bytes failed.
    ==16317==        3013349376 bytes have already been allocated.
    ==16317==     Valgrind cannot continue.  Sorry.
    ==16317== 
    ==16317==     There are several possible reasons for this.
    ==16317==     - You have some kind of memory limit in place.  Look at the
    ==16317==       output of 'ulimit -a'.  Is there a limit on the size of
    ==16317==       virtual memory or address space?
    ==16317==     - You have run out of swap space.
    ==16317==     - Valgrind has a bug.  If you think this is the case or you are
    ==16317==     not sure, please let us know and we'll try to fix it.
    ==16317==     Please note that programs can take substantially more memory than
    ==16317==     normal when running under Valgrind tools, eg. up to twice or
    ==16317==     more, depending on the tool.  On a 64-bit machine, Valgrind
    ==16317==     should be able to make use of up 32GB memory.  On a 32-bit
    ==16317==     machine, Valgrind should be able to use all the memory available
    ==16317==     to a single process, up to 4GB if that's how you have your
    ==16317==     kernel configured.  Most 32-bit Linux setups allow a maximum of
    ==16317==     3GB per process.
    ==16317== 
    ==16317==     Whatever the reason, Valgrind cannot continue.  Sorry.

巨大なスワップ ファイルを使用してみましたが、改善されません。クラッシュは、スワップ ファイルがいっぱいになるずっと前に発生します。私は Fedora 19 を使用しています。誰もこれについて何か知っていますか?インターネットで、単一のプロセスが割り当てることができるメモリに制限がある可能性について何かを読んだと思います。その場合、どこで設定できますか?少なくとも、valgrind の人々に代わる良い方法を教えてください :P.

前もって感謝します

4

1 に答える 1

0

「ほとんどの 32 ビット Linux セットアップでは、プロセスごとに最大 3GB を使用できます。」

3GB に非常に近い 3013349376 バイトを割り当てました。したがって、おそらく 32 ビット OS を使用しており、1 つのプロセスでメモリが不足しているだけです (他の ~200 MB はおそらく valgrind のオーバーヘッドです)。

于 2013-11-03T08:31:15.630 に答える