When should use use dispose? or implement IDisposable versus setting an object to nothing?

what is the most effective way to destroy a created object and free up its used memory?