# Java Memory Area
### `Method Area`
- A space created when the JVM starts
- A space where Class information, global variable information, and Static variable information are stored
- `Runtime Constant Pool`
- A space where constants are stored, as the name suggests
- Information is shared across all threads
### `Heap`
- A space where objects created with the new operator and dynamically created objects such as Arrays are stored
- Data stored in the Heap area is not destroyed unless processed by GC
- A space where `Reference Type` data is stored
- Information is shared across all threads
### `Stack`
- A space where temporarily used data such as local variables and method parameters are stored
- Has a `LIFO (Last In First Out)` structure, where data that entered last exits first
- If a local variable is a Reference Type, the address value of data stored in the Heap is stored in the Stack for use
- A space where `Primitive Type` data is stored
- One exists per Thread
### `PC Register`
- A space created when a Thread is created
- Registers the address of which instruction the Thread is processing
- Serves the role of storing the current position being executed by the JVM
### `Native Method Stack`
- A space used when execution of methods written in languages other than Java (C, C++) is needed