久久一区二区三区超碰国产精品,亚洲人成在线网站,国产在线精品一区免费香蕉,国产精品免费电影

歡迎您訪問java 虛擬機(JVM)相關概念!

java 虛擬機(JVM)相關概念

更新時間:2022-10-13 09:11:34作者:佚名

JVM是Java (Java虛擬機)的縮寫,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。

Java語言的一個非常重要的特點就是與平臺的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的能夠"一次編譯,到處運行"的原因。

JVM是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種基于下層的操作系統和硬件平臺并利用軟件方法來實現的抽象的計算機,可以在上面執行java的字節碼程序。

的虛擬機是根據移動設備的特點基于Java虛擬機(JVM)改進而來,雖然沒有保留規范,但作為Java語言的使用者,了解一下JVM的規范還是有必要的。

VM在執行Java程序時,會把它管理的內存劃分為若干個的區域,每個區域都有自己的用途和創建銷毀時間。如下圖所示,可以分為兩大部分mysql虛擬主機,線程私有區和共享區:

線程私有區

程序計數器。當同時進行的線程數超過CPU數或其內核數時,就要通過時間片輪詢分派CPU的時間資源,不免發生線程切換。這時,每個線程就需要一個屬于自己的計數器來記錄下一條要運行的指令。如果將是Java方法,則記錄執行的字節碼地址;是本地方法,則計數器為空。

虛擬機棧,與線程同時創建。每個方法執行時都會創建一個棧幀來存儲方法的信息,新調用的方法入棧,返回的出棧,所以棧的大小決定方法調用的可達深度。若需要的棧深度大于可用深度時,則;若棧進行擴展,但內存不夠時mysql虛擬主機,。

本地方法棧,與虛擬機棧作用相似。但它不是為Java方法服務的,而是本地方法(C語言)。由于規范對這塊沒有強制要求,不同虛擬機實現方法不同。

2.2.線程共享區

此區域是用來存儲被各線程共享的數據的。

方法區,用于存放加載類的元數據信息,如常量、靜態變量和即時編譯器編譯后的代碼。若要分代,算是永久代,以前類大多“”的,很少被卸載或收集,現回收廢棄常量和無用的類。其中運行時常量池存放編譯生成的各種常量。

堆,存放對象實例和數組,是垃圾回收的主要區域,分為新生代和老年代。剛創建的對象在新生代的Eden區中,經過GC后進入新生代的S0區中,再經過GC進入新生代的S1區中,15次GC后仍存在就進入老年代。這是按照一種回收機制進行劃分的,不是固定的。若堆的空間不夠實例分配,則。

棧是運行時單位,代表著邏輯,內含基本數據類型和堆中對象引用,所在區域連續,沒有碎片;堆是存儲單位,代表著數據,可被多個棧共享(包括成員中基本數據類型、引用和引用對象),所在區域不連續,會有碎片。

JVM內存結構主要有三大塊:堆內存、方法區和棧。堆內存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內存又被分成三部分,Eden空間、空間、To 空間,默認情況下年輕代按照8:1:1的比例來分配;

方法區存儲類信息、常量、靜態變量等數據,是線程共享的區域,為與Java堆區分,方法區還有一個別名Non-Heap(非堆);棧又分為java虛擬機棧和本地方法棧主要用于方法的執行。

就說到這里,大家可以留言交流。

主站蜘蛛池模板: 福贡县| 长春市| 铜梁县| 合水县| 美姑县| 皋兰县| 龙江县| 瑞昌市| 清徐县| 石门县| 盐津县| 嵊泗县| 昌吉市| 文昌市| 宝清县| 封丘县| 瑞丽市| 建德市| 成都市| 安宁市| 页游| 明星| 永德县| 襄樊市| 莱阳市| 藁城市| 灵寿县| 竹山县| 祁门县| 常熟市| 永顺县| 杂多县| 新密市| 石阡县| 孙吴县| 林周县| 昌宁县| 德钦县| 上蔡县| 乃东县| 六枝特区|