Behind the Scene of Java
JVM, JRE and JDK/ Memory Allocation Java
What I mean by this is allot of the behind the scene action isn’t strictly necessary to know if you are just code or following a tutorial. Now that I have started coding in Java I’m starting to realize I’m learning more about how code gets processed(Java Specific).
So today I’ll be pulling back the veil and going through JVE, JRE, and JDK. As well as a brief oversight of Memory Allocation in Java.
JVM ,JRE and JDK
Below is a picture explaining how when you write your logic(Code) in a Java file its converted into class file so that the machine can read your logic and run it.
- JVM is the java virtual machine that runs the java byte code.
- JVM can be loaded on various hardware platforms, byte codes are the machine language of JVM. So Java is a better portable language. JVM is the entity that makes Java portable; there are different implementations of JVM for different OS (mac, windows, linux) etc.
- JRE is java runtime environment that is sufficient to run the program.
- JRE = JVM + library files/java package classes (Util, Lang, Math etc).
- JDK is java development kit, required to write, compile and run a program.
- JDK = JRE + Tools needed to develop java program.
- Each time object is created in Java it is stored in heap memory.
- Primitive variables and local are stored in stack, member variables in heap.
- In multithreading each thread will have its own stack but will share same heap. We will discuss multithreading later in part 2.
- Methods and variables are pushed to the stack when a method is invoked and stack pointer is decremented when call is completed.
- 32 bit OS can’t use more than 4GB RAM for java application. 64 bit use more memory for same object, almost twice.
- Primitive int uses 4 times less memory than Integer.
The below table gives an idea of various datatypes and range of values it can hold.
Please share you you’ve learned something and keep coding!