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

首頁 > 編程 > Java > 正文

java-jvm-內存模型

2019-11-06 06:39:27
字體:
來源:轉載
供稿:網友

大多數 JVM 將內存區域劃分為 Method Area(Non-Heap)(方法區) ,Heap(堆) , PRogram Counter Register(程序計數器) ,   VM Stack(虛擬機棧,也有翻譯java 方法棧的),Native Method Stack  ( 本地方法棧 ),其中Method Area 和 Heap 是線程共享的  ,VM Stack,Native Method Stack  和Program Counter Register  是非線程共享的。為什么分為 線程共享和非線程共享的呢?請繼續往下看。

首先我們熟悉一下一個一般性的 Java 程序的工作過程。一個 Java 源程序文件,會被編譯為字節碼文件(以 class 為擴展名),每個java程序都需要運行在自己的JVM上,然后告知 JVM 程序的運行入口,再被 JVM 通過字節碼解釋器加載運行。那么程序開始運行后,都是如何涉及到各內存區域的呢?

概括地說來,JVM初始運行的時候都會分配好 Method Area(方法區) 和Heap(堆) ,而JVM 每遇到一個線程,就為其分配一個 Program Counter Register(程序計數器) ,   VM Stack(虛擬機棧)和Native Method Stack  (本地方法棧), 當線程終止時,三者(虛擬機棧,本地方法棧和程序計數器)所占用的內存空間也會被釋放掉。這也是為什么我把內存區域分為線程共享和非線程共享的原因,非線程共享的那三個區域的生命周期與所屬線程相同,而線程共享的區域與JAVA程序運行的生命周期相同,所以這也是系統垃圾回收的場所只發生在線程共享的區域(實際上對大部分虛擬機來說知發生在Heap上)的原因。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗山县| 涞水县| 岢岚县| 阿拉尔市| 洞口县| 日土县| 高唐县| 青河县| 朔州市| 南皮县| 柏乡县| 金川县| 横山县| 尚义县| 长顺县| 冷水江市| 凤城市| 兰州市| 阿荣旗| 中方县| 澎湖县| 日照市| 德令哈市| 漳平市| 工布江达县| 安平县| 隆化县| 凤山市| 纳雍县| 平顶山市| 新河县| 南江县| 青田县| 嘉义市| 巨野县| 澄城县| 白沙| 日喀则市| 黄平县| 万盛区| 潜山县|