1. the garbage collection mechanism is platform dependent
I don't really know, but Java is supposed to run the same, regardless of the operating system (it's one of the benefits of using Java). Possibly it could depend on the JVM beung used, but I'd be surprised if this was the case.
2.u can suggest when garbage collection will run but u cannot be certain when it will take place.
Well, garbage collection is done by a daemon thread, and like all threads, you can specify when something should run, but that doesn't necessarily mean that it will run when you say

I'm not sure you can actually invoke the garbage collection thread to run at a certain time (it's a background process that runs whenever higher priority threads stop/pause), but assuming you can invoke it, it'll be subject to all the quirks that normal threads are
3.a reference to a primitative variable is eligble for garbage collection when it is set to null.
Not sure. As far as I know, a variable is eligible for garbage collection if it is never reffered to in the program again- I could probably think of a few times when testing to see if a primitive is null is actually a useful thing to do (such as I/O streams), which obviously wouldn't work if the garbage collector had come along and killed it
4.the automtic garbage collection of java virtual machine prevents programs from ever running out of memory
Again, I don't really know

That may be it's intention, but stick a few infinte loops in your program and I'd be willing to bet things would lock up ;D