記憶體區域--程式計數器、本地方法棧、堆
阿新 • • 發佈:2018-12-17
文章目錄
程式計數器
概念
程式計數器(Program Counter Register)
也稱作為PC暫存器
作用
標記當前執行緒執行的位元組碼位置
特點
執行緒私有
佔用記憶體小
過程
Java的多執行緒是對CPU進行分時複用,
執行緒獲取CPU時間後,為了能恢復到正確的執行位置
每個執行緒都必須擁有自己的程式計數器,標記自己的執行位置
本地方法棧
概述
本地方法棧(Native Method Stacks)
作用
本地方法棧則是為執行緒執行本地方法(Native Method)服務的。 任何本地方法介面都會使用某種本地方法棧。當執行緒呼叫Java方法時,虛擬機器會建立一個新的棧幀並壓入Java棧。然而當它呼叫的是本地方法時,虛擬機器會保持Java棧不變,不再線上程的Java棧中壓入新的幀,虛擬機器只是簡單地動態連線並直接呼叫指定的本地方法。
特點
執行緒私有
在JVM規範中,並沒有對本地方發展的具體實現方法以及資料結構作強制規定,虛擬機器可以自由實現它。
在HotSopt虛擬機器中直接就把本地方法棧和Java棧合二為一。
Java堆
概述
Java堆(Java Heap)
堆
作用
用來儲存物件以及陣列
但是並不是全部的例項物件都在堆中(棧上分配)
劃分
在採用分代收集演算法的JVM中
hotspot中
堆由新生代和老年代組成,
新生代由Eden區,From Survivor區,To Survivor區組成
預設情況下各自佔比 8:1:1
特點
堆是執行緒共享 但是對於具體的ThreadLocal資料區是執行緒私有的