黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 JVM運行機制是怎樣的

JVM運行機制是怎樣的

更新時間:2020-10-22 17:18:15 來源:動力節(jié)點 瀏覽1415次

我們知道java語言的特點之一是跨平臺性,而JVM是java跨平臺的關(guān)鍵所在。JVM上執(zhí)行java字節(jié)碼,執(zhí)行時這些字節(jié)碼可以解釋成具體平臺的機器碼,學習JVM運行機制以及原理,會懂得為什么java語言擁有“一次編譯,處處運行”這一跨平臺能力。


什么是JVM呢?JVM是Java Virtual Machine(Java虛擬機)的縮寫,是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。Java虛擬機主要由字節(jié)碼指令集、寄存器、棧、垃圾回收堆和存儲方法域等構(gòu)成。JVM屏蔽了與具體操作系統(tǒng)平臺相關(guān)的信息,使java程序只需生成在java虛擬機上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。


要知道JVM運行機制,對JVM內(nèi)存模型的構(gòu)成要了解,我們從內(nèi)存模型來理解JVM運行機制。JVM內(nèi)存模型主要由堆內(nèi)存、方法區(qū)、程序計數(shù)器、虛擬機棧和本地方法棧組成,其組成的結(jié)構(gòu)如下圖所示:

image.png


堆內(nèi)存:堆內(nèi)存是所有線程共有的,可以分為兩個部分:年輕代和老年代。下圖中的Perm代表的是永久代,但是注意永久代并不屬于堆內(nèi)存中的一部分,同時jdk1.8之后永久代也將被移除。堆內(nèi)存是我們在生產(chǎn)環(huán)境中進行內(nèi)存性能調(diào)優(yōu)中的一個重要的內(nèi)容,而內(nèi)存回收的一些機制和算法也是在java面試題中常出現(xiàn)的考察內(nèi)容。

image.png


方法區(qū):方法區(qū)與java堆一樣,是各個線程共享的區(qū)域,它用于存儲已被虛擬機加載的類信息,常量,靜態(tài)變量,即時編譯(JIT)后的代碼等數(shù)據(jù)。由于程序中所有的線程共享一個方法區(qū),所以訪問方法區(qū)的信息必須確保線程是安全的。如果有兩個線程同時去加載一個類,那么只能有一個線程被允許去加載這個類,另一個必須等待。在程序運行時,方法區(qū)的大小是可以改變的,程序在運行時可以擴展。同時,方法區(qū)里面的對象也可以被垃圾回收,但條件非常嚴苛,必須在該類沒有任何引用的情況下才能被GC回收。


程序計數(shù)器:JVM的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式來實現(xiàn)的,為了各條線程之間的切換后計數(shù)器能恢復到正確的執(zhí)行位置,所以每條線程都會有一個獨立的程序計數(shù)器。當線程正在執(zhí)行一個Java方法,程序計數(shù)器記錄的是正在執(zhí)行的JVM字節(jié)碼指令的地址;如果正在執(zhí)行的是一個Natvie(本地方法),那么這個計數(shù)器的值則為空。程序計數(shù)器占用的內(nèi)存空間很少,也是唯一一個在JVM規(guī)范中沒有規(guī)定任何內(nèi)存不足錯誤的區(qū)域。


Java虛擬機棧:與程序計數(shù)器一樣,Java虛擬機棧也是線程私有的,用通俗的話將它就是我們常常聽說到堆棧中的那個“棧內(nèi)存”。虛擬機棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀(Stack Frame)用于存儲局部變量表(局部變量表需要的內(nèi)存在編譯期間就確定了所以在方法運行期間不會改變大小),操作數(shù)棧,動態(tài)鏈接,方法出口等信息。每一個方法從調(diào)用至出棧的過程,就對應著棧幀在虛擬機中從入棧到出棧的過程。


本地方法棧:棧作為一種線性的管道結(jié)構(gòu),遵循先進后出的原則。主要用于存儲本地方法的局部變量表,本地方法的操作數(shù)棧等信息。當棧內(nèi)的數(shù)據(jù)在超出其作用域后,會被自動釋放掉。本地方法棧是在程序調(diào)用或JVM調(diào)用本地方法接口(Native)時候啟用。


JVM的生命周期,JVM在Java程序開始執(zhí)行的時候,它才運行,程序結(jié)束的時它就停止。一個Java程序會開啟一個JVM進程,如果一臺機器上運行三個程序,那么就會有三個運行中的JVM進程。JVM中的線程分為兩種:守護線程和普通線程,守護線程是JVM自己使用的線程,比如垃圾回收(GC)就是一個守護線程;普通線程一般是Java程序的線程,只要JVM中有普通線程在執(zhí)行,那么JVM就不會停止。


以上是對JVM運行機制的解釋介紹,希望大家可以認真學習,JVM虛擬機是構(gòu)成java編程技術(shù)體系的重要一部分,對JVM運行機制原理理解好了后,才可以在java教程中更好的學習到虛擬機更多更深入的知識點。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 牛牛热在线视频 | 日韩欧美一区二区中文字幕 | 国产一区二区三区免费观看 | 久久riav.com| 久久青草18免费观看网站 | 丝袜美女足交 | kk4kk免费视频毛片 | 亚洲片在线| 黄色三级在线视频 | 成年片色大黄全免费 | 成人污 | 亚洲免费网址 | 欧美一级高清黄图片 | 日韩精品视频美在线精品视频 | 免费网站看av片 | 日韩新片在线观看 | 色多多网站 | 国产尻逼| 一级片在线免费看 | 国产在线乱子伦一区二区 | 国产成人ae在线观看网站站 | 男女下面进视频免费 | 天天摸日日摸人人看 | 欧美精品一区二区三区四区 | 日韩欧美在线一级一中文字暮 | 亚洲色图综合图区 | 2019中文字幕在线 | 日韩毛片高清在线看 | 日本二级黄色片 | 欧美性4khd| 一级做a爰片性色毛片武则天五则 | 一级韩国aa毛片免费观看 | 黄色片视频在线观看 | 国产100页 | 美女视频很黄很暴黄是免费的 | 看真人视频一一级毛片 | 99久久精品国产亚洲 | 国产欧美日韩成人 | 77成人影视| 人人擦人人 | 黄色影片观看 |