I might care about that for operational reasons. For example I don't want a bunch of objects to be collected when my application is otherwise busy, but that wasn't the point.
That I understand. Modern gc algorithms are pretty good, though.
I might have references to objects which I expect to be freed up. I would like to say "this object should be free now" so the VM can say "so, it won't".
That I don't understand. First, one can't possibly know for sure when an object is freeable. Moreover, how could one even say "free up this object"? If you can even say that, then you'd have a pointer to it, giving it a positive reference count! But, secondly, and this is really my question, why should one care? Even if an object is marked for deletion, that memory won't be made available until the VM is good and ready. (When swept.) So, what's the advantage?
By analogy, when I save a file to disk, I don't care what sectors it's written to. The dos worries about that for me, so that I can get on with writing software that addresses the business problem at hand.