[erlang-questions] garbage collection questions
Tue Oct 2 07:29:32 CEST 2007
Doug Currie <> writes:
> Two questions:
> Why isn't the garbage being collected inside my ns (or mark) loop?
For historical reasons, arithmetic operations never causes a
garbage collection. Instead, if a an arithmetic operation produces
a float or bignum, a "heap fragment" outside of the heap is allocated
for it. Too much data in heap fragments will eventually trigger a GC,
though, but in this case too late.
In R12B, we will change that. Bignums and floats will be put onto the
heap and there will be a garbage collection if the heap is full.
Testing your program in our development version of R12B (I only had
patience to use the argument 3), I see that there are a lot more GCs
but that it actually runs faster than in R11B-5.
By the way, your program will run faster if you define is_prime/2
is_prime(B, I) -> 0 =:= ((B bsr I) band 1).
The reason is that at most one bignum will be constructed, not two.
Björn Gustavsson, Erlang/OTP, Ericsson AB
More information about the erlang-questions