Would it be possible for you to store the data in a database table or some type of disk storage, rather than storing all of it in memory? That would make your program much more scalable...
Otherwise, I'm surprised that I can't find some docs ANYWHERE that show how to calculate memory usage of data structures.
Update: Check out Camel 3, p. 504. Maybe PERL_DEBUG_MSTATS will help?
Update2: Hmm.. Who wants to play with some inline C and figure out a way to do a sizeof() to pull the memory usage of a hash? Is that possible?
Update3: Here's da goodz:
http://take23.org/docs/guide/performance.xml/4. It has GTop examples.
Fletch was all over that from the start. :)