The class loader performs the below 3 activities in the mentioned order:
Loading: finds and imports the binary data for a type.
Linking: performs verification, preparation, and optionally resolution.
Verification: ensures the correctness of the imported type.
- Preparation: allocates memory for class variables and initializing the memory to default values.
- Resolution: transforms symbolic references from the type into direct references.
Initialization: invokes Java code that initializes class variables to their proper starting values.