Dispose () достаточно хорош.
Я не уверен, как работает .NET. Но вызов функции сложения или "set null" ухудшит производительность в Java.
CLR / Java VM сможет (и должна) очистить все разыменованные управляемые объекты от «корней» в следующей сборке мусора.
PS.
Dispose () очищает «неуправляемые» ресурсы, чтобы улучшить производительность GC, так как он не ожидает завершения потока Finallizer.