1. 程式人生 > >記憶體區域--程式計數器、本地方法棧、堆

記憶體區域--程式計數器、本地方法棧、堆

文章目錄

程式計數器

概念

程式計數器(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資料區是執行緒私有的