It works acceptably fine as it is in the areas it's used.
Java is not really used for desktop apps where low-latency GCs are required. And high-throughput high-latency GCs are generally preferable on servers.
That's also basically the answer to the question: "Why aren't we all using realtime Linux kernel?" And if you really need a realtime GC then there are people who would gladly sell it to you.
Now, there is new research in this area (G1GC in newer SunOracle JDKs). So we're moving in a right direction.