1. 程式人生 > >Java虛擬機器JVM詳解

Java虛擬機器JVM詳解

一.JVM記憶體管理

1.1JVM執行時資料區

1.1.1程式計數器:記錄當前執行緒正在執行的位元組碼指定的地址(行號)

為什麼需要它:程式容易被打斷

1.1.2虛擬機器棧:儲存當前執行緒執行方法時所需要的資料、指令、返回地址

1.1.3本地方法棧:和虛擬機器棧類似,儲存的是native方法

1.1.4方法區:類資訊、常量(1.7移至堆)、靜態變數、JIT(編譯好的程式碼等資料 1.7移至堆)

1.1.5堆:存放所有例項物件和陣列

設定:啟動時分配的記憶體:-Xms,最大記憶體 -Xmx

 

1.2JVM記憶體模型

 

1.3JVM垃圾回收(GC)

判斷物件是否存活

記憶體洩漏:物件沒有被回收 例:物件出棧時沒有置空

記憶體溢位:記憶體不夠了

1.4JDK提供的工具

jps 虛擬機器程序狀況

jstat 虛擬機器統計資訊監控工具

jmap Java記憶體映像區域

jstack Java堆疊跟蹤工具

jconsole Java監視與管理控制檯