Codementor Events

Java Runtime Data Areas

Published Apr 18, 2019

Runtime Data Area is the memory used by the Java Virtual Machine during the execution of the program.

https://sumathikotthuri.wordpress.com/2019/04/16/java-runtime-data-areas/

There are 6 java run time data areas :

  • PC (Program Counter) Register
  • Java Virtual Machine Stack
  • Heap
  • Method Area
  • Run-time Constant Pool
  • Native Method Stacks

PC Register

  • Each JVM thread has its PC register.
  • PC Register is created when a thread is created and destroyed when a thread exits.
  • PC Register returns the address of the current instruction which is being executed by JVM.

Java Virtual Machine Stack

  • Each JVM thread has a private Java Virtual Machine Stack
  • JVM Stack is created when a thread a created and destroyed when a thread exits.
  • JVM Stack stores frames.
  • JVM Stack contains the local variables and partial results.
  • Data passed as parameters to methods and data returned by methods are also stored in JVM Stack.
  • JVM Stack memory doesn’t have to be contiguous.
  • Initial Size and in case of dynamic expansion, minimum and maximum sizes can be controlled by a programmer

Heap

  • All JVM threads share the Heap.
  • Heap is created on JVM start-up and destroyed when JVM exits.
  • Memory required for class instances and arrays is allocated in the heap.
  • Initial Size and in case of dynamic expansion, minimum and maximum sizes can be controlled by a programmer
  • Heap memory doesn’t have to be contiguous.

Method Area

  • All JVM threads share the Method Area.
  • Method Area is logically part of the heap.
  • Method Area is created on JVM start-up and destroyed when JVM exits.
  • Run-time Constant pool is a logical part of Method Area.
  • Method Area is storage for Compiled Code i.e. it contains per-class structure (Run-time Constant Pool), field and method data.
  • Method Area memory need not be contiguous.
  • Initial Size and in case of dynamic expansion, minimum and maximum sizes can be controlled by a programmer

Runtime Constant Pool

  • Runtime Constant pool is a logical part of Method Area.
  • Runtime Constant pool is a per-class or per-interface runtime representation
  • Runtime Constant pool for a Class or interface is created when a Class or interface is created by JVM

Native Method Stacks

  • JVM may use conventional stacks to support native methods
  • JVM need not supply Native method stacks to load native methods. If supplied, Native methods stacks are created per thread.
  • Initial Size and in case of dynamic expansion, minimum and maximum sizes can be controlled by a programmer

Exceptions that will be thrown by Runtime Data Areas

  • StackOverflowError
    • If the computation requires a larger stack than permitted, then JVM throws this Exception. Both stacks below throw this exception when the above-mentioned condition arises.
      • JVM Stack
      • Native Method Stack
  • OutOfMemoryError
    • To create the JVM Stack , if the JVM attempts to dynamically expand the Stack Area and available memory is insufficient, then JVM throws this Exception.
    • If any computation requires more Heap than available, then JVM throws this Exception.
    • When an allocation request of Method Area doesn’t find sufficient memory, then JVM throws this exception
    • When creating a Class or Interface, if the Runtime constant pool requires more memory, then JVM throws this Exception
Discover and read more posts from Sumathi Kotthuri
get started