Techniques are provided for instantiating separate Java virtual machines
for each session established by a server. Because each session has its
own virtual machine, the Java programs executed by the server for each
user connected to the server are insulated from the Java programs
executed by the server for all other users connected to the server. The
separate VM instances can be created and run, for example, in separate
units of execution that are managed by the operating system of the
platform on which the server is executing. For example, the separate VM
instances may be executed either as separate processes, or using separate
system threads. Because the units of execution used to run the separate
VM instances are provided by the operating system, the operating system
is able to ensure that the appropriate degree of insulation exists
between the VM instances.