1

Erlang アプリケーションを実行しているときに、このエラー レポートが表示されました。


クラッシュ ダンプの書き込み先: erl_crash.dump

eheap_alloc: 18446744071692551144 バイトのメモリ (タイプ「ヒープ」) を割り当てることができません。

これは、単純な PC 上で実行される単純なプログラムです。どうしてそのような数字を得ることができるのでしょうか? ところで、10^10 GB を割り当てようとしています。このプログラムは基本的に、末尾再帰と非常に少量のプロセスのみを実行します。

4

2 に答える 2

0

以前、同様のダンプに遭遇したとき、それはプロセス内の巨大なメールボックスが原因で、何百万ものメッセージが積み上げられていました。

次のコード スニペットで確認できます。

top() ->
    Procs = lists:foldl(fun(Pid, Acc) ->
        case erlang:process_info(Pid, message_queue_len) of
            {_K, V} -> [{Pid, V} | Acc];
            _ -> Acc
        end
    end, [], erlang:processes()),
    lists:keysort(2, Procs).
于 2015-10-10T03:18:47.960 に答える