There are really only two main use cases that I can think of. Standalone client apps, which care about startup time and not about GC in the long run, and server usage, which doesn't really care about startup time but GC and steady performance in the long rung is vital. Some apps may create (class) instances runtime a lot more than others, so that might have an impact as well.
About the differences:
- JRockit doesn't really have PermGen, but uses regular heap for the same. As some software have issues with PermGen not getting collected, JRockit behaves better on those. Oracle/Sun VM has Eden space, survivior space, tenured generation and permanent generation, whereas JRockit has just young generation and old generation.
- Garbage collection strategies are somewhat different. Depends on the software which one is best suited for a given situation.
- Debug flags are different, and some debugging software expect a certain JDK. JRockit has JRockit mission control which is an advanced tool on monitoring the current status of your JVM. Some version is free to download, for latest patches you need an Oracle support contract. With Oracle VM, you can use all the standard tools: visualvm, jhat, jmap, jprof, MAT, jstat. It's a matter of taste and use case which one you prefer.
If you change it manually, you will likely see an error about unsupported debug flags. Once you change those, you can hit a PermGen error earlier on the Oracle VM: other than that, I would expect you only see a difference in GC profiles and/or performance testing.
In the long run you might want to take a look at what this thread has to say. JRockit and Oracle JVM will become one and the same.