http://www.programcreek.com/2013/04/jvm-run-time-data-areas/
This is my note of reading JVM specification. I draw a diagram which helps me understand.
1. Data Areas for Each Individual Thread (not shared)@H_502_9@
Data Areas for each individual thread include program counter register,JVM Stack,and Native Method Stack. They are all created when a new thread is created.
Program Counter Register: it is used to control each execution of each thread. JVM Stack: It contains frames which is demonstrated in the diagram below.
Native Method Stack: it is used to support native methods,i.e.,non-Java language methods.
2. Data Areas Shared by All Threads@H_502_9@
All threads share Heap and Method Area.
Heap: it is the area that we most frequently deal with. It stores arrays and objects,created when JVM starts up. Garbage Collection works in this area.
Method Area: it stores run-time constant pool,field and method data,and methods and constructors code。
Runtime Constant Pool: It is a per-class or per-interface run-time representation of the constant_pool table in a class file. 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.
Stack contains Frames,and a frame is pushed to the stack when a method is invoked. A frame contains local variable array,Operand Stack,Reference to Constant Pool.
For more information,please go to the offical JVM specification site.
References: 1. 2.