Erl_interface's fixed term allocator
Mon Oct 18 20:54:46 CEST 1999
Answering my own question, I put in calls to erl_eterm_statistics()
and observered how the memory was being used. I was in fact using
increasingly more memory and found a break in a case loop that didn't
belong and was causing the erl_free_term() top be skipped.
What erl_eterm_statistics() showed me though was that it was handling
freeing up the "freed" list periodically. It seemed to keep about
30 items in the freed list at all times.
} My C program which interfaces to Erlang using the erl_interface
} library keeps failing hours or days after startup with:
} <ERROR> erl_alloc_eterm: Failed to allocate more memory
} : Insufficient or invalid memory
} I use erl_free_term() to free each ETERM that I allocate. Some
} investigation suggests that this is not enough. Apparently this
} just moves the memory to a "freelist".
} Do I have to empty the freelist myself with erl_eterm_release()?
} If so when and how often should I do so?
More information about the erlang-questions