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

首頁 > 學院 > 開發設計 > 正文

JVM摘要

2019-11-06 07:18:31
字體:
來源:轉載
供稿:網友

這里寫圖片描述

這里寫圖片描述

JVM分為:

方法區(Method Area):

用于存儲已被虛擬機加載的類信息,常量靜態變量即時編譯器編譯后的代碼等數據。雖然java虛擬機規范把方法區描述為堆得一個邏輯部分,但是他卻有一個別名叫做Non-Heap,目的應該是與java堆區分開來。

運行時常量池:為方法區的一部分

Class文件中除了有類的版本,字段,方法,接口等描述信息外,還有一項信息是常量池,用于存放編譯期生成的各種字面量符號引用,這部分內容將在類加載后存放到方法區的運行時常量池中。 一般來說,除了保存在Class文件中描述的符號引用外,還會把翻譯出來的直接引用也存儲在運行時常量池中。

java堆(Heap):

存儲java實例或者對象的地方。這塊是GC的主要區域。從存儲的內容我們可以很容易知道,方法區和堆是被所有java線程共享的。


~線程獨有~

java棧(Stack):

java棧總是和線程關聯在一起,每當創建一個線程時,JVM就會為這個線程創建一個對應的java棧。

棧幀:在java棧中

在這個java棧中又會包含多個棧幀,每個方法被執行的時候都會同時創建一個棧幀(Stack Frame)用于存儲局部變量表、操作棧、動態鏈接、方法出口。 每一個方法從調用直至執行完成的過程,就對應一個棧幀在java棧中入棧到出棧的過程。 當進入一個方法時,這個方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運行期間不會改變局部變量表的大小。

局部變量表:在棧幀中

局部變量表存放了編譯期可知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference類型),它不等同于對象本身,根據不同的虛擬機實現,它可能是一個指向對象起始地址的引用指針,也可能指向一個代表對象的句柄或者其他與此對象相關的位置)和returnAddress類型(指向了一條字節碼指令的地址)。

程序計數器(PC Register):

用于保存當前線程執行的內存地址。由于JVM程序是多線程執行的(線程輪流切換),所以為了保證線程切換回來后,還能恢復到原先狀態,就需要一個獨立的計數器,記錄之前中斷的地方,可見程序計數器也是線程私有的。

本地方法棧(Native Method Stack):

和java棧的作用差不多,只不過是為JVM使用到的native方法服務的。

java內存分析:http://blog.csdn.netshimisoarticledetails8595564

java常量池分析:http://www.cnblogs.comDreamSeaarchive201111202256396.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 本溪| 香格里拉县| 台北县| 巍山| 积石山| 云南省| 宁津县| 资阳市| 涪陵区| 大名县| 桃江县| 云梦县| 高密市| 类乌齐县| SHOW| 文化| 峨山| 甘泉县| 贵州省| 奉化市| 抚顺县| 庆城县| 信丰县| 扶风县| 沈阳市| 抚州市| 同仁县| 辽阳市| 福安市| 荔波县| 称多县| 长白| 都匀市| 水富县| 上林县| 灌阳县| 湟源县| 行唐县| 婺源县| 钦州市| 镇雄县|