1. 程式人生 > >Java虛擬機之Java內存區域

Java虛擬機之Java內存區域

器) 輪換 .com 虛擬 解釋器 控制 虛擬機 關心 分配

Java虛擬機運行時數據區域

⑴背景:對於c/c++來說程序員來說,需要經常去關心內存運行情況,但對於Java程序員,只需要在必要時關心內存運行情況,這是因為在Java虛擬機自動內存管理機制的幫助下,不再Java程序員需要為每一個新生成對象去釋放資源,這些事情都將交由Java虛擬機去做,但為什麽我們還需要學習Java虛擬機呢?這是因為Java程序員吧內存控制權交給Java虛擬機之後一旦出現了內存泄漏和溢出,不了解Java虛擬機的內存運行,排查將會非常困難。

技術分享

Java虛擬機運行時數據區

Java虛擬機的多線程通過線程輪換並分配處理器執行時間的方式來實現,任何一個確定時刻,一個處理器都只會執行一條線程中的指令。因此,為了時線程切換後能恢復到正確執行位置,每條線程都需要一個獨立的程序計數器,線程之前有獨立存儲互不影響。

⑵程序計數器:程序計數器是一塊較小的內存空間,字節碼解釋器工作時,通過改變計數器值選擇下一條需要執行的字節碼指令(分支、循環、跳轉、異常處理、線程恢復都用到了程序計數器)。

Java虛擬機的棧:

Java虛擬機之Java內存區域