I'm suggesting this - when a shuffle dependency goes out of scope in the driver we can find all of the associated stages. Once the stages are located then we tell each Executor to clean up everything corresponding to the stage. This would include the map status and any other information. Right now this might have to go through a BlockManager message or something like that. Basically I'm suggesting we try to do principled garbage collection based on things going out of scope whenever possible.