Memory usage with ETS

Peter-Henry Mander <>
Fri Aug 5 20:15:16 CEST 2005

No! no, I'm wrong. It didn't work. ETS memory consumption still grows
regardless. Grumble.

Any helpful suggestions? (on Friday evening? Yeah right, I'm going


On Fri, 2005-08-05 at 18:16 +0100, Peter-Henry Mander wrote:
> Hi Gurus,
> I've carried out a little experiment. The program I've written
> originally used several ETS tables throughout it's processing lifetime,
> and memory consumption grew gradually as it progressed. I have found
> that periodically copying all the records over to a new table, deleting
> the original table then calling erlang:garbage_collect/0 has helped to
> stabilise memory consumption.
> Is this a suitable method? Are there any drawbacks or gotchas I should
> be wary of?
> The program performance is dominated by disk access since it processes
> call data records, so I doubt that copying a few tables with
> approximately 32,000 records each will have a huge impact. However will
> this method cause performance issues on other systems?
> For example, I've rewritten the timer module so that I can specify timer
> periods with microsecond granularity to enable issuing messages at rates
> of, say 333 cps (the timer approximates the period to the nearest
> millisecond and will achieve 333 cps on average). I've used ETS to store
> the timer sequence since inserting into lists gets very costly as the
> number and frequency of the timers increases. I haven't run the timer
> for very long but I suspect the ETS table will grow monotonically. How
> can I reduce the memory footprint without resorting to table copying
> which will disrupt the timer?
> Pete.

More information about the erlang-questions mailing list