in reply to WHY copying does happen (fork)

How about using a module like DB_File, BerkeleyDB or CDB to share the data between processes? You'd have to redevelop your interface to the data, but it would be a memory efficient way to share it.