Does it make difference to clean up the data structures, when they are not needed anymore? I don’t mean disposing the disposables – it’s obviously required, but, for example, cleaning up dictionaries, lists or other structures to reduce the number of references to objects.
Does it help GC to free the memory faster when there are less refferences (simpler GC graph)?
No, it doesn’t. If a “parent” object isn’t reachable, then its “child” references won’t be traversed anyway, so they make no difference.
More importantly, clean-up code generally acts as a distraction from the real code. It’s very rarely worth explicitly setting variables to null etc in an effort to help the garbage collector. There are times when it’s worth doing, but they usually suggest that perhaps you should refactor your code anyway (e.g. to use smaller methods if you were setting local variables to null, or creating smaller objects if you were setting instance variables to null).