Java Programming
Java Virtual Machine (JVM) is the heart of entire Java program execution process. First of all, the .java program is converted into a .class file consisting of byte code instructions by the java compiler at the time of compilation. Remember, this java compiler is outside the JVM. This .class file is given to the JVM.
Following figure shows the architecture of Java Virtual Machine
Java Virtual Machine (JVM) is the heart of entire Java program execution process. First of all, the .java program is converted into a .class file consisting of byte code instructions by the java compiler at the time of compilation. Remember, this java compiler is outside the JVM. This .class file is given to the JVM.
Following figure shows the architecture of Java Virtual Machine
Method Area // Class Area:
Class area is the logical memory block of JVM, which holds information about classes and interfaces. Static variables are treated as class variables, because they take memory from method area. The size of the method area shrinks and expands according to the size of the application.
Heap:
In Java when an object or an array is created, memory is allocated to them from heap. The JVM through the use of new operator allocates memory from the heap for an object. The JVM has a daemon thread known as Garbage Collector whose task is to free those object from heap whose reference is not alive in stack.
JVM Language Stack || JAVA Stack:
Method code are stored on Method area. But while running a method, it needs some more memory to store the data and results. This memory is allotted on Java Stacks. So, Java Stacks are memory area where Java methods are executed.
PC (Program Counter) registers:
It keep track of the sequence of execution of the program. These are the registers (memory areas), which contain memory address of the instructions of the methods or PC register or program counter register holds the addresses of the instructions to be executed next.
Native Method Stacks:
When a Java application invokes a native method, that application does not only use Java Stacks but also uses the native method stack for the execution of native methods (for example C/C++ functions). To execute the native methods, generally native method libraries (for example C/C++ header files) are required. The libraries required for the execution of native methods are available to the Java Virtual Machine through Java Native Interface.
Execution Engine:
contains interpreter and JIT compiler which translates the byte code instructions into machine language which are executed by the microprocessor. Hot spot (loops/iterations) is the area in .class file i.e. executed by JIT compiler. JVM will identify the Hot spots in the .class files and it will give it to JIT compiler where the normal instructions and statements of Java program are executed by the Java interpreter.
Comments