This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The value of a Java reference has meaning only within the context of a single instance of a JVM. In other words, if you tried to restore the object in another instance of the JVM, even running on the same computer on which the object was originally serialized, the reference would be useless.
If you run 2 java processes, you have 2 JVM instances running on the system with a separate heap allocated to each one.
Of course I am trying to boil down the concept and present to you a single line which would be simple to understand. If your question has a more specific direction, I can follow it up with an answer that is more narrow.
Please bear in mind that whenever you talk about JVM, you may be actually talking about three different things:
1) The abstract Specification.
2) A concrete implementation (of spec)
3) A run-time instance of a Java Virtual Machine.
The aim or mission of a run-time instance of JVM is : to run one Java Application.
When a Java application starts, a run-rime instance of JVM is born and when application completes/terminates, the instance dies.
Each Java application runs inside its own run-time instance of JVM.
i.e. If you start three Java Application on the same computer, using the same concrete implementation of JVM, three seperate run-time instance will born, for each application.
@For the curious: A run-time instance of Java Virtual Machine continues to live as long as any non-daemon threads are running. When all non-daemon threads of application terminates, the run-time instance of JVM will die.
Note: This excerpt is from a MUST READ book - Inside the Java Virtual Machine by Bill Venners. One can also check out : Java Corner-Artima