ni.com is currently undergoing scheduled maintenance.
Some services may be unavailable at this time. Please contact us for help or try again later.
I haven't used the dictionary VIs, but looking at the code shows that they use OpenGOOP, which works by opening a reference to a reentrant LV2 global.
When you destroy the object, the reference is also closed, so the reentrant VI should theoretically be removed from memory at the point, but the memory is not always freed up immediately because of the way LV manages memory. I'm not sure which VI is considered the top level VI when you have a dynamic call, but that is what should determine when LabVIEW actually releases the memory to be reused by another application.
If you want, OpenG have their own forums, where you can ask the question.