---
# System prepended metadata

title: JVM Architecture
tags: [Thread, Java]

---

# JVM Architecture
###### tags: `Java` `Thread`
**Method Area** 
	存放被已類別載入器載入的資訊 : 類訊息、編譯後的code、變量、變量修飾字、方法、參數等等。
	
 **Heap**
存放物件實例的地方，生命週期不可預期。為GC重點區域 

**Stack** 
先進後出的資料類型、生命週期可預期。
Stack內包含Local Variable Array、Operand Stack、Frame Data

**PC Registers**
記錄目前執行緒接下來要執行的指令：跳轉、循環、異常處理等等。
每個執行緒都會有一個並且是執行緒私有的。

**Native Method Stack**
Java提供調用本地方法的介面，也就是C/C++程序，舉凡網路、File等操作都需要透過JNI方法
而Native Method Stack則是JVM為本地方法劃分記憶體區塊，儲存了本地方法的資訊


[https://blog.marksylee.com/2016/09/14/java-interview-02-jvm-stack-heap/](https://blog.marksylee.com/2016/09/14/java-interview-02-jvm-stack-heap/)