SlideShare a Scribd company logo
By,
PRITY KUMARI
205111037
NIT-Trichy(MCA)
 JVM is an interpreter for bytecode.
 JVM needs to be implemented on each
platform.
 Enhance portability.
 Assure security.
 Encourage Fast execution of the program.
 Def : JVM is a component of the Java system
that interprets and executes the instructions in
our class files.
 Compiled code to be executed by the Java
Virtual Machine is represented using a
hardware- and operating system-independent
binary format, typically (but not necessarily)
stored in a file, known as the class file format.
 The class file format precisely defines the
representation of a class or interface, including
details such as byte ordering that might be
taken for granted in a platform-specific object
file format.
 Like the Java programming language, the Java
Virtual Machine operates on two kinds of types:
primitive types and reference types.
 There are, correspondingly, two kinds of values
that can be stored in variables, passed as
arguments, returned by methods, and operated
upon: primitive values and reference values.
 The instruction set of the Java Virtual Machine
distinguishes its operand types using instructions
intended to operate on values of specific types.
 For instance, iadd, ladd, fadd, and dadd
 numeric types,
 the boolean type
 returnAddress type
1)Numeric types
The integral types are:
 Byte(8-bit signed two's-complement integers)
 Short (16-bit signed two's-complement integers)
 Int(32-bit signed two's-complement integers)
 Long(64-bit signed two's-complement integers)
 Char(16-bit unsigned )and default value is the null
code point ('u0000')
2) Floating-point:
 float, whose values are elements of the float value set
and whose default value is positive zero
 double, whose values are elements of the double value
and whose default value is positive zero
3)Boolean-type:
 encode the truth values true and false, and the default
value is false.
4)returnAddress Type:
 The values of the returnAddress type are pointers to
the opcodes of Java Virtual Machine instructions.
 Of the primitive types, only the returnAddress type is
not directly associated with a Java programming
language type.
 There are three kinds of reference types:
class types
array types
interface types.
 Their values are references to dynamically created
class instances, arrays, or class instances or arrays
that implement interfaces, respectively.
 A reference value may also be the special null
reference, a reference to no object, which will be
denoted here by null
 The Java Virtual Machine specification does not
mandate a concrete value encoding null.
FIG: Memory Configuration of JVM
The JVM defines various run-time data areas that
are used during execution of a program. Some
of these data areas are created on JVM start-up
and are destroyed only when the Java Virtual
Machine exits.
Other data areas are per thread. Per-thread data
areas are created when a thread is created and
destroyed when the thread exits.
1)The pc Register:
 The JVM can support many threads of execution at once
 Each Java Virtual Machine thread has its own pc (program
counter) register.
2) JVM Stacks:
 Each JVM thread has a private JVM stack, created at the same
time as the thread.
 It holds local variables and partial results, and plays a part in
method invocation and return.
 Because the JVM stack is never manipulated directly except to
push and pop frames, frames may be heap allocated.
 The memory for a JVM stack does not need to be contiguous.
 Throws two exceptions
- OutOfMemoryError.
- StackOverflowError.
3) Heap
 The JVM has a heap that is shared among all Java Virtual
Machine threads.
 The heap is the run-time data area from which memory for
all class instances and arrays is allocated.
 The heap is created on virtual machine start-up.
 Throws one exception
- OutOfMemoryError
4) Method Area
 The method area is analogous to the storage area for
compiled code of a conventional language or analogous to
the "text" segment in an operating system process.
 It stores per-class structures such as the run-time constant
pool, field and method data, and the code for methods and
constructors, including the special methods used in class
and instance initialization and interface initialization.
 Throws one exception
- OutOfMemoryError
5) Run-Time Constant Pool
It contains several kinds of constants, ranging from numeric
literals known at compile-time to method and field references
that must be resolved at run-time.
 The run-time constant pool serves a function similar to that of a
symbol.
6) Native Method Stacks
 An implementation of the Java Virtual Machine may use
conventional stacks, called "C stacks," to support native
methods
 Java Virtual Machine implementations that cannot load native
methods and that do not themselves rely on conventional
stacks need not supply native method stacks.
 If supplied, native method stacks are typically allocated per
thread when each thread is created.
Figure 2: Content of Memory Blocks at runtime.
 Loading means reading the class file for a type, parsing it to get its
information, and storing the information in the method area.
 For each type it loads, the JVM must store the following information in the
method area:
 The fully qualified name of the type
 Whether the type is a class or an interface
 The type's modifiers ( public, abstract, final, etc)
 Method info: name, return type, number & types of parameters, modifiers,
bytecodes, size of stack frame and exception table.
The end of the loading process is the creation of an instance of
java.lang.Class for the loaded type.
The purpose is to give access to some of the information
captured in the method area for the type, to the programmer.
Some of the methods of the class java.lang.Class are:
Note that for any loaded type T, only one instance of java.lang.Class is
created even if T is used several times in an application.
public String getName()
public Class getSupClass()
public boolean isInterface()
public Class[] getInterfaces()
public Method[] getMethods()
public Fields[] getFields()
public Constructor[] getConstructors()
 The next process handled by the class loader is Linking. This
involves three sub-processes: Verification, Preparation and
Resolution
 Example of some of the things that are checked at verification are:
 Every method is provided with a structurally correct signature
 Every instruction obeys the type discipline of the Java language
 Every branch instruction branches to the start not middle of
another instruction
 In this phase, the JVM allocates memory for the class (i.e static)
variables and sets them to default initial values.
 Note that class variables are not initialized to their proper
initial values until the initialization phase - no java code is
executed until initialization.
 The default values for the various types are shown below:
 Resolution is the process of replacing symbolic names
for types, fields and methods used by a loaded type
with their actual references.
 Symbolic references are resolved into a direct references
by searching through the method area to locate the
referenced entity.
 For the class below, at the loading phase, the class
loader would have loaded the classes: TestClassClass,
String, System and Object.
 The names of these classes would have been stored in
public class TestClassClass{
public static void main(String[] args){
String name = new String(“Ahmed”);
Class nameClassInfo = name.getClass();
System.out.println("Parent is: “ + nameClassInfo.getSuperclass());
}
}
 After a class is loaded, linked, and initialized, it is
ready for use. Its static fields and static methods can be
used and it can be instantiated.
 When a new class instance is created, memory is
allocated for all its instance variables in the heap.
 Memory is also allocated recursively for all the instance
variables declared in its super class and all classes up is
inheritance hierarchy.
 All instance variables in the new object and those of its
superclasses are then initialized to their default values.
 Finally, the reference to the newly created object is
returned as the result.
Rules for processing a constructor:
 Assign the arguments for the constructor to its parameter
variables.
 If this constructor begins with an explicit invocation of another
constructor in the same class (using this), then evaluate the
arguments and process that constructor invocation recursively.
 If this constructor is for a class other than Object, then it will begin
with an explicit or implicit invocation of a superclass constructor
(using super). Evaluate the arguments and process that
superclass constructor invocation recursively.
 Initialize the instance variables for this class with their proper
values.
 Execute the rest of the body of this constructor.
JVM

More Related Content

PPTX
Jdk,jre,jvm
PPTX
Java virtual machine
PPTX
Introduction to java
PPTX
Introduction to java
PPTX
Introduction to java
PPTX
QSpiders - Jdk Jvm Jre and Jit
PPTX
Java input
PPS
Java Exception handling
Jdk,jre,jvm
Java virtual machine
Introduction to java
Introduction to java
Introduction to java
QSpiders - Jdk Jvm Jre and Jit
Java input
Java Exception handling

What's hot (20)

PPTX
Core java complete ppt(note)
PPTX
Java architecture
PPT
Packages in java
PPTX
Access specifiers(modifiers) in java
PPTX
Classes objects in java
PPT
Introduction to Java Programming, Basic Structure, variables Data type, input...
PPTX
Static Members-Java.pptx
PPTX
JRE , JDK and platform independent nature of JAVA
DOCX
JDK,JRE,JVM
PPTX
core java
PPTX
Control Statements in Java
PDF
Introduction to Java Programming
PDF
Introduction to basics of java
PPTX
Java program structure
PPT
Exception Handling in JAVA
PPTX
Inheritance in java
PPT
Core java concepts
PPTX
Operators in java
PPTX
Introduction to JAVA
Core java complete ppt(note)
Java architecture
Packages in java
Access specifiers(modifiers) in java
Classes objects in java
Introduction to Java Programming, Basic Structure, variables Data type, input...
Static Members-Java.pptx
JRE , JDK and platform independent nature of JAVA
JDK,JRE,JVM
core java
Control Statements in Java
Introduction to Java Programming
Introduction to basics of java
Java program structure
Exception Handling in JAVA
Inheritance in java
Core java concepts
Operators in java
Introduction to JAVA
Ad

Viewers also liked (20)

PPT
Java-java virtual machine
PPT
JVM- Java Virtual Machine
PPTX
Architecture diagram of jvm
PPTX
Java virtual machine
PDF
Understanding JVM
PPTX
QSpiders - Memory (JVM architecture)
PPTX
Jvm Architecture
PPTX
Java byte code & virtual machine
PPTX
Inheritance in JAVA PPT
PPTX
Inside the jvm
PDF
Basics of JVM Tuning
PDF
What's Inside a JVM?
PPT
Java Serialization
PPTX
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
PPTX
Java bytecode and classes
PPTX
Java Multi Thead Programming
PDF
Threads concept in java
PPS
QSpiders - Variable Length-Subnet-Masks
PPT
Java And Multithreading
Java-java virtual machine
JVM- Java Virtual Machine
Architecture diagram of jvm
Java virtual machine
Understanding JVM
QSpiders - Memory (JVM architecture)
Jvm Architecture
Java byte code & virtual machine
Inheritance in JAVA PPT
Inside the jvm
Basics of JVM Tuning
What's Inside a JVM?
Java Serialization
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Java bytecode and classes
Java Multi Thead Programming
Threads concept in java
QSpiders - Variable Length-Subnet-Masks
Java And Multithreading
Ad

Similar to JVM (20)

PPT
Java14
PDF
Jvm internal detail
PPTX
Simple insites into JVM
PPTX
Lecture 2 Java Virtual Machine .pptx
PPTX
Core-Java-by-Mahika-Tutor.9459891.powerpoint.pptx
PPT
JavaTutorials.ppt
PPT
testing ppt
PDF
Java Interview Questions Answers Guide
PPT
Java tutorials
PDF
Basic Java Programming
PPT
Java Fundamentals.pptJava Fundamentals.ppt
PPTX
1 java programming- introduction
PDF
Java Basics Presentation
PPTX
Java introduction
ODP
Synapseindia reviews.odp.
PPTX
Core Java Tutorials by Mahika Tutorials
PPTX
What is Java? Presentation On Introduction To Core Java By PSK Technologies
Java14
Jvm internal detail
Simple insites into JVM
Lecture 2 Java Virtual Machine .pptx
Core-Java-by-Mahika-Tutor.9459891.powerpoint.pptx
JavaTutorials.ppt
testing ppt
Java Interview Questions Answers Guide
Java tutorials
Basic Java Programming
Java Fundamentals.pptJava Fundamentals.ppt
1 java programming- introduction
Java Basics Presentation
Java introduction
Synapseindia reviews.odp.
Core Java Tutorials by Mahika Tutorials
What is Java? Presentation On Introduction To Core Java By PSK Technologies

Recently uploaded (20)

PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Business Ethics Teaching Materials for college
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
Open Quiz Monsoon Mind Game Final Set.pptx
PPTX
Open Quiz Monsoon Mind Game Prelims.pptx
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Pharma ospi slides which help in ospi learning
PDF
Introduction-to-Social-Work-by-Leonora-Serafeca-De-Guzman-Group-2.pdf
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
TR - Agricultural Crops Production NC III.pdf
Business Ethics Teaching Materials for college
PPH.pptx obstetrics and gynecology in nursing
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
Open Quiz Monsoon Mind Game Final Set.pptx
Open Quiz Monsoon Mind Game Prelims.pptx
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Pharma ospi slides which help in ospi learning
Introduction-to-Social-Work-by-Leonora-Serafeca-De-Guzman-Group-2.pdf
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Pharmacology of Heart Failure /Pharmacotherapy of CHF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx

JVM

  • 2.  JVM is an interpreter for bytecode.  JVM needs to be implemented on each platform.  Enhance portability.  Assure security.  Encourage Fast execution of the program.  Def : JVM is a component of the Java system that interprets and executes the instructions in our class files.
  • 3.  Compiled code to be executed by the Java Virtual Machine is represented using a hardware- and operating system-independent binary format, typically (but not necessarily) stored in a file, known as the class file format.  The class file format precisely defines the representation of a class or interface, including details such as byte ordering that might be taken for granted in a platform-specific object file format.
  • 4.  Like the Java programming language, the Java Virtual Machine operates on two kinds of types: primitive types and reference types.  There are, correspondingly, two kinds of values that can be stored in variables, passed as arguments, returned by methods, and operated upon: primitive values and reference values.  The instruction set of the Java Virtual Machine distinguishes its operand types using instructions intended to operate on values of specific types.  For instance, iadd, ladd, fadd, and dadd
  • 5.  numeric types,  the boolean type  returnAddress type 1)Numeric types The integral types are:  Byte(8-bit signed two's-complement integers)  Short (16-bit signed two's-complement integers)  Int(32-bit signed two's-complement integers)  Long(64-bit signed two's-complement integers)  Char(16-bit unsigned )and default value is the null code point ('u0000')
  • 6. 2) Floating-point:  float, whose values are elements of the float value set and whose default value is positive zero  double, whose values are elements of the double value and whose default value is positive zero 3)Boolean-type:  encode the truth values true and false, and the default value is false. 4)returnAddress Type:  The values of the returnAddress type are pointers to the opcodes of Java Virtual Machine instructions.  Of the primitive types, only the returnAddress type is not directly associated with a Java programming language type.
  • 7.  There are three kinds of reference types: class types array types interface types.  Their values are references to dynamically created class instances, arrays, or class instances or arrays that implement interfaces, respectively.  A reference value may also be the special null reference, a reference to no object, which will be denoted here by null  The Java Virtual Machine specification does not mandate a concrete value encoding null.
  • 9. The JVM defines various run-time data areas that are used during execution of a program. Some of these data areas are created on JVM start-up and are destroyed only when the Java Virtual Machine exits. Other data areas are per thread. Per-thread data areas are created when a thread is created and destroyed when the thread exits.
  • 10. 1)The pc Register:  The JVM can support many threads of execution at once  Each Java Virtual Machine thread has its own pc (program counter) register. 2) JVM Stacks:  Each JVM thread has a private JVM stack, created at the same time as the thread.  It holds local variables and partial results, and plays a part in method invocation and return.  Because the JVM stack is never manipulated directly except to push and pop frames, frames may be heap allocated.  The memory for a JVM stack does not need to be contiguous.  Throws two exceptions - OutOfMemoryError. - StackOverflowError.
  • 11. 3) Heap  The JVM has a heap that is shared among all Java Virtual Machine threads.  The heap is the run-time data area from which memory for all class instances and arrays is allocated.  The heap is created on virtual machine start-up.  Throws one exception - OutOfMemoryError 4) Method Area  The method area is analogous to the storage area for compiled code of a conventional language or analogous to the "text" segment in an operating system process.  It stores per-class structures such as the run-time constant pool, field and method data, and the code for methods and constructors, including the special methods used in class and instance initialization and interface initialization.  Throws one exception - OutOfMemoryError
  • 12. 5) Run-Time Constant Pool It contains several kinds of constants, ranging from numeric literals known at compile-time to method and field references that must be resolved at run-time.  The run-time constant pool serves a function similar to that of a symbol. 6) Native Method Stacks  An implementation of the Java Virtual Machine may use conventional stacks, called "C stacks," to support native methods  Java Virtual Machine implementations that cannot load native methods and that do not themselves rely on conventional stacks need not supply native method stacks.  If supplied, native method stacks are typically allocated per thread when each thread is created.
  • 13. Figure 2: Content of Memory Blocks at runtime.
  • 14.  Loading means reading the class file for a type, parsing it to get its information, and storing the information in the method area.  For each type it loads, the JVM must store the following information in the method area:  The fully qualified name of the type  Whether the type is a class or an interface  The type's modifiers ( public, abstract, final, etc)  Method info: name, return type, number & types of parameters, modifiers, bytecodes, size of stack frame and exception table.
  • 15. The end of the loading process is the creation of an instance of java.lang.Class for the loaded type. The purpose is to give access to some of the information captured in the method area for the type, to the programmer. Some of the methods of the class java.lang.Class are: Note that for any loaded type T, only one instance of java.lang.Class is created even if T is used several times in an application. public String getName() public Class getSupClass() public boolean isInterface() public Class[] getInterfaces() public Method[] getMethods() public Fields[] getFields() public Constructor[] getConstructors()
  • 16.  The next process handled by the class loader is Linking. This involves three sub-processes: Verification, Preparation and Resolution  Example of some of the things that are checked at verification are:  Every method is provided with a structurally correct signature  Every instruction obeys the type discipline of the Java language  Every branch instruction branches to the start not middle of another instruction
  • 17.  In this phase, the JVM allocates memory for the class (i.e static) variables and sets them to default initial values.  Note that class variables are not initialized to their proper initial values until the initialization phase - no java code is executed until initialization.  The default values for the various types are shown below:
  • 18.  Resolution is the process of replacing symbolic names for types, fields and methods used by a loaded type with their actual references.  Symbolic references are resolved into a direct references by searching through the method area to locate the referenced entity.  For the class below, at the loading phase, the class loader would have loaded the classes: TestClassClass, String, System and Object.  The names of these classes would have been stored in public class TestClassClass{ public static void main(String[] args){ String name = new String(“Ahmed”); Class nameClassInfo = name.getClass(); System.out.println("Parent is: “ + nameClassInfo.getSuperclass()); } }
  • 19.  After a class is loaded, linked, and initialized, it is ready for use. Its static fields and static methods can be used and it can be instantiated.  When a new class instance is created, memory is allocated for all its instance variables in the heap.  Memory is also allocated recursively for all the instance variables declared in its super class and all classes up is inheritance hierarchy.  All instance variables in the new object and those of its superclasses are then initialized to their default values.  Finally, the reference to the newly created object is returned as the result.
  • 20. Rules for processing a constructor:  Assign the arguments for the constructor to its parameter variables.  If this constructor begins with an explicit invocation of another constructor in the same class (using this), then evaluate the arguments and process that constructor invocation recursively.  If this constructor is for a class other than Object, then it will begin with an explicit or implicit invocation of a superclass constructor (using super). Evaluate the arguments and process that superclass constructor invocation recursively.  Initialize the instance variables for this class with their proper values.  Execute the rest of the body of this constructor.

Editor's Notes

  • #5: For instance, iadd , ladd , fadd , and dadd are all Java Virtual Machine instructions that add two numeric values and produce numeric results, but each is specialized for its operand type: int, long, float, and double, respectively.
  • #8: An array type consists of a component type with a single dimension (whose length is not given by the type). The component type of an array type may itself be an array type. . The null reference initially has no run-time type, but may be cast to any type. The default value of a reference type is null.
  • #11: A JVM stack stores frames . JVM stack is analogous to the stack of a conventional language such as C:
  • #12: The Java Virtual Machine has a method area that is shared among all Java Virtual Machine threads.
  • #13: The run-time constant pool serves a function similar to that of a symbol table for a conventional programming language, although it contains a wider range of data than a typical symbol table.
  • #17: Verification is the process of ensuring that binary representation of a class is structurally correct The JVM has to make sure that a file it is asked to load was generated by a valid compiler and it is well formed Class B may be a valid sub-class of A at the time A and B were compiled, but class A may have been changed and re-compiled
  • #19: In this phase, the names are replaced with their actual references.