VB uses a so-called "reference counting" garbage collector.
Basically, the moment a variable goes out of scope, the reference counter on the referenced object is decremented. Consequently, when you assign the object reference to some variable, the reference counter is incremented.
When the counter reaches zero, the object is ready for garbage collection. The object resources will be released as soon as this happens. A function local variable will most likely reference an object whose reference count never goes higher than 1, so object resources will be released when the function ends.
Setting a variable to Nothing
is the way to decrease the the reference counter explicitly.
For example, you read in a file, and set the file object variable to Nothing
right after the ReadAll()
call. The file handle will be released immediately, you can take your time process it's contents.
If you don't set to Nothing
, the file handle will be open longer than absolutely necessary.
If you are not in this "must unblock valuable resource" kind of situation, simply letting the variables go out of scope is okay.