in reply to Do I need to free allocated space in an END sub?

Your problem isn't with mod_perl per se, but with Apache::Registry - it calls END blocks at the end of each request, probably to accomodate sloppy coding :-)

Maybe you could put an object in a global at BOOT time, and hang a DESTROY method on that object. As long as you don't remove the object during normal runtime, it should be destroyed when the interpreter exits (and DESTROY should be called then).

For other options, see Apache::ChildExit.