Verification is the process of ensuring that the binary representation of a class file
in the method area is correct
and not corrupt. The byte code verifier is responsible for doing this check. If there is anything
wrong with the .class file that is loaded into the method area, the byte code verifier will throw a
java.lang.VerifyError.
Preparation
This is where the JVM allocates memory for all the static variables or the class level variables and assigns
the default values to them based on their data type.
Resolution
It is the process of replacing the symbolic names with original memory references in the method area.
For example I have a class called A which uses B and string S. Class
A will have a constant pool wherein all these classes are stored.
The classes that A uses are stored.
These references will be replaced with their actual memory locations when these classes are loaded into the method area.