Yes. Each JVM is a seperate process and will use it's own memory space. This means, for example, that a class, like
java.lang.Object will be loaded into the memory spaces of each JVM.
You can run multiple application in the same JVM. Basicially, you create your own classloader. When you start an app, it checks to see if there's already a JVM running, and if so, makes sure that JVM spawns a new
thread and runs the new application. Obviously the first JVM to start up needs a way to announce itself in ways future programs can check when they start up.
I know there are solutions out there which do this. I think one of the Java Magazines even gave an exmaple back in 2000. I would also guess that Star Office does something like this.
--Mark