Presentation is loading. Please wait.

Presentation is loading. Please wait.

JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage.

Similar presentations

Presentation on theme: "JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage."— Presentation transcript:

1 JVM-1 Introduction to Java Virtual Machine

2 JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage Collection Interpreter and Just-In-Time Compiler

3 JVM-3 Hello.c gcc for Win gcc for Mac gcc for Linux Windows X86 Mac PowerPC Hello Linux X86 Hello

4 JVM-4 javac Windows X86 Mac PowerPC Hello Hello.class Hello Linux X86 Hello

5 JVM-5 The Big Picture Java Compiler Java Compiler A.class B.class C.class Java Virtual Machine Java Language Specification Java Virtual Machine Specification

6 JVM-6 Java Platforms (1) A Java Platform consists –Java Virtual Machine  CPU –A set of standard classes  API JVM in all platforms must satisfy JVM spec. Standard classes can be tailored according the the resource constraints –Three levels of Java platforms: J2EE, J2SE and J2ME

7 JVM-7 Java Platforms (2) From KVM White Paper (Sun Microsystem )

8 JVM-8 What Is in the JVM Spec? Bytecodes – the instruction set for Java Virtual Machine Class File Format – The platform independent representation of Java binary code Verification Rules – the algorithm for identifying programs that cannot compromise the integrity of the JVM

9 JVM-9 Implementations of JVM JVM OS Hardware Java OS Hardware Java Chip Java Application Java Application Java Application JVM Specification does not specify how a JVM is implemented

10 JVM-10 Class Area Organization of JVM Class Information Constant Pool Method Area Heap Stack Native Stack Native Stack Execution Engine Execution Engine Native Interface Native Interface Class Loader Class Loader File System *.class File System *.class Internet *.class Internet *.class PC, FP, SP Registers Native Methods Native Methods

11 JVM-11 Class Loader 1. Loading: finding and importing the binary data for a class 2. Linking: Verification: ensuring the correctness of the imported type Preparation: allocating memory for class variables and initializing the memory to default values Resolution: transforming symbolic references from the type into direct references. 3. Initialization: invoking Java code that initializes class variables to their proper starting values

12 JVM-12 Verification Is it a structurally valid class file? Are all constant references correct? Will each instruction always find a correct formed stack and local variable array? Check out external references Other safety requirements

13 JVM-13 Class Area Class Information –Internal representation of Java classes –Information about the superclass and implemented interfaces –Information about the fields and methods Constant Pool Method Area –Contains the bytecodes of the methods of the loaded classes

14 JVM-14 Stack The Java stack is composed of frames –A frame contains the state of one Java method invocation –Logically, a frame has two parts: local variable array and operand stack JVM has no registers; it uses the operand stack for storage of intermediate data values –to keep the JVM's instruction set compact –to facilitate implementation on architectures with limited number of general purpose registers Each Java thread has its own stack and cannot access the stack of other threads

15 JVM-15 Stack Frame public class A {...... void f(int x) { int i; for(i=0; i<x; i++) {...... }...... } Return PC Caller’s FP Caller’s SP x i Inter- Mediate Data Values SP  Local Variable Array FP  Operand Stack

16 JVM-16 Stack – Each Thread Has its own Stack Heap Stack Thread 1Thread 2Thread 3 Frame

17 JVM-17 Heap All Java objects are allocated in the heap Java applications cannot explicitly free an object The Garbage Collector is invoked from time to time automatically to reclaim the objects that are no longer needed by the application The heap is shared by all Java threads

18 JVM-18 Java Objects in the Heap Class Area class A class Object Heap clazz Fields 1 Fields 2 … Fields n clazz … clazz … class B

19 JVM-19 Garbage Collector Roots: internally defined by the JVM implementation root A B C D E F G A B C D E F G Live Objects: reachable from the roots Garbage (Dead Objects): not reachable from the roots, not accessible to the application

20 JVM-20 root A B C D E F G A B C D E F G B E G B E G Before GC LiveGarbageUnknownFree After MarkAfter SweepAfter Compact Mark / Sweep / Compaction

21 JVM-21 Generational Garbage Collection Most objects live for very shot time A small percentage of them live much longer Old Generation Free Young Generation Old Generation Young Generation Free Old Generation Old Generation Young Generation Free

22 JVM-22 Execution Engine Executes Java bytecodes either using interpreter or Just-In-Time compiler Registers: –PC: Program Counter –FP: Frame Pointer –SP: Operand Stack Top Pointer

23 JVM-23 Interpreter vs Just-In-Time Compiler CPU Interpreter Bytecode JIT Compiler CPU Native Code Bytecode InterpretationJIT Compilation

24 JVM-24 Bytecode Interpreter (1) while(program not end ) { fetch next bytecode => b switch(b) { case ILOAD: load an integer from the local variable array and push on top of current operand stack; case ISTORE: pop an integer from the top of current operand stack and store it into the local variable array; case ALOAD:...... } // end of switch } // end of while

25 JVM-25 Bytecode interpreter (2) Advantage –Ease to implement –Does not need extra memory to store compiled code Disadvantage –Very Slow: 10 ~ 100 times slower than execution of native code

26 JVM-26 Just-In-Time Compiler Dynamically compiles bytecode into native code at runtime, usually in method granularity Execution of native code is much faster than interpretation of bytecode Compilation is time consuming and may slow down the application Tradeoffs between execution time and compilation time

27 JVM-27 Adaptive Compiler Observation: less than 20% of the methods account for more than 80% of execution time –Methods contains loop with large number of iteration; –Methods that are frequently invoked Idea 1: only compile the methods where the application spends a lot of time Idea 2: perform advanced compiler optimization for the hottest methods, simple or no compiler optimization for less hot methods

28 JVM-28 How Adaptive Compiler Works Set three thresholds T1, T2 (T1<T2) Each method has a counter that is initialized to 0. Whenever the method is invoked, increase its counter by 1 The methods with counter lower than T1 are executed using interpreter When a method’s counter reaches T1, compile this method with simple optimizations When a method’s counter reaches T2, recompile this method with advanced optimizations

29 JVM-29 Processor Virtualization Hardware Processor VMWare Virtual Processor LinuxWindows Win32 AppLinux App

Download ppt "JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage."

Similar presentations

Ads by Google