Java Virtual Machine is a program/software which takes Java bytecode (.class files) and converts the byte code into machine understandable code.
JVM contains a module known as a class loader. A class loader in JVM loads, links and initialize a program.
1. Loads the class into the memory.
2. Verifies the byte code instructions.
3. Allocates memory for the program.
The memory in the JVM is divided into five different parts namely :
- Method area : The method area stores the class code, code of the variables and methods.
- Heap : The Java objects are created in this area.
- Java Stack : While running methods the results are stored in the stack memory.
- PC (
Program Counter) Register : These contain the address of the instructions of the methods.
- Native method stacks : Similar to Java stack, native methods are executed on the Native method stacks.