棧內存是線程私有的,其生命週期和線程相同;函數
虛擬機棧描述的是Java方法執行的內存模型:執行一個方法時會產生一個棧幀隨後將其保存到棧(先進後出)的頂部,方法執行完畢後會自動將此棧幀進行出棧。頂部的棧幀就表示的是當前的方法;線程
圖介紹3d
棧幀主要組成成分指針
JVM中的運行時數據區包括:對象
棧是運行時的單位,而堆是存儲的單位。blog
圖解遞歸
JVM:Java虛擬機,全部程序都要求運行在JVM上,考慮到了可移植性問題。生命週期
Java程序中能夠使用native關鍵字實現本地C函數的調用。可是這些都屬於程序運行的輔助手段,而真正的程序都運行在「運行時數據區」之中。內存
運行時數據區分爲如下幾個內存空間:字符串
Java之中存在對象池的概念,對象池是對整個常量的常量池的規則破壞,由於在JVM啓動的時候,全部常量都已經分配好空間,可是String中的intern()方法卻能夠打破限制,動態的進行常量池的內容設置。