Erl_interface's fixed term allocator

Vance Shipley <>
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?
}  	-Vance

More information about the erlang-questions mailing list