[erlang-questions] Early Out of Memory

Patrik Nyblom <>
Fri Mar 1 10:33:35 CET 2013


Hi!
On 03/01/2013 07:09 AM, Vance Shipley wrote:
> In the pathological example below why is eheap_alloc failing to
> allocate 1.4GB of memory on a system with many more gigabytes of
> memory available?
Looks like you're running a 32 bit VM, in which case you have at a 
absolute maximum 4GB of memory. A heap allocation of 1.3 GB means an old 
version of the heap of possibly the same size (copying GC) + old heap 
generations and so on. A heap also needs to have continuous virtual 
memory, so the chance of having a single process with this much heap 
running on a 32bit VM is slim at best. If you have a lot of physical 
memory in the machine, run a 64bit OS and a 64bit Erlang VM.
>
> Erlang R16B (erts-5.10.1) [source] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
>
> Eshell V5.10.1  (abort with ^G)
> 1> F = fun(F, Acc) -> F(F, [lists:seq(1,1000) | Acc]) end.
> #Fun<erl_eval.12.17052888>
> 2> F(F, []).
> beam.smp(73592,0xb039d000) malloc: *** mmap(size=549453824) failed (error code=12)
>    *** error: can't allocate region
>                                    *** set a breakpoint in malloc_error_break to debug
>       beam.smp(73592,0xb039d000) malloc: *** mmap(size=1139802112) failed (error code=12)
>          *** error: can't allocate region
>                                          *** set a breakpoint in malloc_error_break to debug
>             beam.smp(73592,0xb039d000) malloc: *** mmap(size=1367343104) failed (error code=12)
>                *** error: can't allocate region
>                                                *** set a breakpoint in malloc_error_break to debug
>                   beam.smp(73592,0xb039d000) malloc: *** mmap(size=1367343104) failed (error code=12)
>                      *** error: can't allocate region
>                                                      *** set a breakpoint in malloc_error_break to debug
>                         beam.smp(73592,0xb039d000) malloc: *** mmap(size=1366781952) failed (error code=12)
>                            *** error: can't allocate region
>                                                            *** set a breakpoint in malloc_error_break to debug
>                               beam.smp(73592,0xb039d000) malloc: *** mmap(size=1366781952) failed (error code=12)
>                                  *** error: can't allocate region
>                                                                  *** set a breakpoint in malloc_error_break to debug
>
> Crash dump was written to: erl_crash.dump
> eheap_alloc: Cannot allocate 1366780092 bytes of memory (of type "heap").
> Abort trap: 6
>
Cheers,
/Patrik




More information about the erlang-questions mailing list