I might be out of date but every time I worked with the JVM I ended up with a lot of command line params to tune the GC and other things.
VMs can tune themselves up to a point but there is always need to give them some precise bounds/goals, methinks.