In general, the garbage collector will only run a full GC when it really needs to. The reason is that it takes a lot of time. It will try to do more smaller GCs that take a lot less time. Fo the most part, this seems to be a good strategy.
There are some extra GC flags you can add to the VM if you want to try to tweek things. See this Addtionally you probably want to make sure you're running the server vm and not the client vm.
I guess the real question is what you're trying to acheive. If you're running out of memory its probably not because of the GC. Its probably because of Memory leaks, and yes you can create them in memory managed environments. They are just a little different.