in reply to exec with cleanup

Im guessing this is for an embedded app Bart, or for some reason you're carefully counting memory bytes. At the point of exit my understanding is that the only references still in scope will be the builtins (@INC, @ARGS etc) and any globals. All objects should have been undef, and you are not inside a block that is holding onto any references the memory usage should be minimal.
Let's clarify the problem further. Are you fearing a leak because the external program will never return execution to your first script? If so, how about forking? After spawning the external prog the script will continue through to a normal exit and cleanup.
Alternatively you could go right outside the box and realise that you could call both the original script and the followup program in sequence from another place.
Addition:
Perls garbage collection is very solid. From pp.451 of the Cookbook (Ram)
"So you're guaranteed that an object eventually gets properly destroyed, unless a program never exits." GC gets called bigtime when the interpreter shuts down. So another (horrible) solution presents itself, just get the followup program to kill its parent when it dies.
Andy