線程共享:元數據區、堆Heap;面試
線程私有:虛擬機棧、本地方法棧、程序計數器;markdown
單個CPU在特定時刻只能執行一個線程,因此多線程經過幾塊空間的使用,而後不斷的爭搶CPU的執行時間段。多線程
基本描述ide
方法元空間(方法區)在JVM啓動的時候被建立,是被各個線程共享的內存空間,用於存放類和方法的元數據以及常量池,好比Class和Method。學習
在實際的開發中,常常由於加載的類太多,進而致使內存溢出問題,這樣能夠對元空間的大小進行擴展。線程
與堆的關係3d
元空間存放加載的類信息,當類被實例化時,堆中存儲實例化的對象信息,而且經過對象類型數據的指針找到類。指針
基本描述視頻
JVM啓動時建立堆區,是內存管理的核心區,一般狀況下也是最大的內存空間,是被全部線程共享的,幾乎全部的對象實例都要在堆中分配內存,因此這裏也是垃圾回收的重點空間。對象
堆棧關係
棧是JVM運行時的單位,堆是存儲單位,當棧中方法結束,相關對象失去全部引用後,不會立刻被移除堆空間,要等到垃圾收集器運行的時候。
虛擬機棧(Java棧)在每一個線程建立時都會生成一個虛擬機棧,棧的內部是一個個棧幀單元,對應Java方法的調用,其生命週期和線程週期保持一致。用來存儲方法的局部遍歷,部分執行結果,方法的調用和返回。
棧幀是方法執行的數據集,維持執行過程當中的各類數據信息,執行的方法依次入棧,棧頂存放當前要執行的方法,執行結束後出棧,對於棧沒有垃圾回收問題。
基本描述
JVM中程序計數寄存器用來存儲下一條將要執行指令的地址,執行引擎獲取到指令後進行執行,是線程私有的。它能夠看做是當前線程所執行的字節碼的行號指示器。
# 最後
更多Java進階學習資料、2021大廠面試真題、視頻資料能夠點擊這裏獲取到免費下載方式!
學習視頻:
大廠面試真題: