Pero cada cuanto tiempo se libera la memoria del GC, porque hay que recordar que el GC no limpia la memoria cada que hacemos "Variable = Nothing".
Según sé, lo hace apróximadamente cada tres segundos. Imagínate que continúa con su código como está y simplemente hace
oUser = Nothing
pUser = Nothing
y lo hace tan rápido que supera al GC. Pues va pasar que por un momento, aunque sea breve, va seguir ocupando los mismos 900 Mb de memoria. Ahora eso se resuelve forzando al GC a que limpie la memoria después de cada "Variable = Nothing", pero el código se vuelve lento y no es recomendable. Por eso que sugería la reutilización de variables.
Ikillnukes, intenta las tres formas y nos dices con cuál te fue mejor. Saludos.