You can mark an object for collection and call GC.Collect();
Besides whats the big deal about it possibly not being collected as soon as all references to a heap object are gone? If the program needed more memory for an allocation it would immediately collect everything that is safe to be collected. You probably can't manage it better yourself.