国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

第一章 JAVA內存結構(1)

2019-11-08 00:59:01
字體:
來源:轉載
供稿:網友

程序計數器

程序計數器是一塊較小的內存區域,它的作用可以看做是當前線程所執行的字節碼的行號指示器。在虛擬機的概念模型里(各種虛擬機可能會通過一些更高效的方式去實現),字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數器來完成。

由于java虛擬機的多線程是通過線程輪流切換并分配處理器執行時間的方式來實現的,在任何一個確定的時刻,一個處理器(對于多核處理器來說是一個內核)只會執行一條線程中的指令。因此,為了線程切換后能恢復到正確的執行位置,每條線程都需要一個獨立的程序計數器,各條線程之間的計數器互不影響,獨立存儲。

JAVA虛擬機棧

JAVA虛擬機棧也是線程私有的,每個方法被執行的時候都會同時創建一個棧幀,用于存儲局總變量表、操作棧、動態鏈接、方法出口等信息。每一個方法被調用直至執行完成的過程,就對應著一個棧幀在虛擬機棧中從入棧到出棧的過程。

局部變量表存放了編譯期可以知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference類型)和returnAddress類型(指向了一條字節碼指令的地址)。其中64位長度的long和double類型的數據會占用2個局部變量空間,其余的數據類型占用1個。局部變量表所需的內存空間在編譯期間完成分配,當進入一個方法時,這個方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運行期間不會改變局部變量表的大小。

本地方法棧

本地方法棧與虛擬機所發揮的作用是非常相似的,其區別不過是虛擬機棧為虛擬機執行Java方法服務,而本地方法棧則是為虛擬機使用到的Native方法服務


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浪卡子县| 濉溪县| 芜湖县| 眉山市| 通江县| 永州市| 建阳市| 财经| 斗六市| 肥东县| 大方县| 西宁市| 略阳县| 龙泉市| 永清县| 新干县| 安泽县| 丽水市| 昭平县| 库车县| 陇南市| 峡江县| 新泰市| 眉山市| 邵东县| 武宣县| 醴陵市| 中牟县| 农安县| 论坛| 永州市| 无锡市| 那曲县| 布拖县| 鄂尔多斯市| 高阳县| 襄垣县| 虹口区| 阿巴嘎旗| 荥阳市| 辽中县|