亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java虛擬機(jī)實(shí)現(xiàn)原理分析

        2020-03-02 07:42:44溫立輝
        科技創(chuàng)新與應(yīng)用 2020年5期
        關(guān)鍵詞:跨平臺(tái)

        溫立輝

        摘? 要:針對(duì)虛擬機(jī)的底層實(shí)現(xiàn)原理及相關(guān)實(shí)現(xiàn)過(guò)程,討論了Java語(yǔ)言的跨平臺(tái)原理以及相關(guān)工作機(jī)制,分析了JVM底層各數(shù)據(jù)區(qū)內(nèi)存管理過(guò)程,闡述了JVM在Java語(yǔ)言中的核心作用以及重要地位。

        關(guān)鍵詞:JVM;跨平臺(tái);內(nèi)存管理;解釋器;類加載

        中圖分類號(hào):TP312? ? ? ? ?文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):2095-2945(2020)05-0053-02

        Absrtact: This paper discusses the cross platform principle and related working mechanism of Java language, analyzes the memory management process of each data area in the bottom layer of JVM, and expounds the core role and important position of JVM in Java language.

        Keywords: JVM; cross platform; memory management; interpreter; class loading

        1 概述

        Java語(yǔ)言的閃耀點(diǎn)是其跨平臺(tái)特性,使其征服了網(wǎng)絡(luò)編程界,而Java虛擬機(jī)以其獨(dú)特的作用及強(qiáng)大的功能支撐起Java平臺(tái)的強(qiáng)大地位,Java虛擬機(jī)是連接應(yīng)用程序與系統(tǒng)平臺(tái)及機(jī)器硬件的橋梁,是Java語(yǔ)言的核心基石。

        2 Java平臺(tái)分層原理

        1995年SUM公司正式對(duì)外發(fā)布了第一個(gè)版本的JDK后,在編程界引起了極大的反響,隨后幾年風(fēng)靡編程領(lǐng)域,從此之后各類面向?qū)ο罂缙脚_(tái)編程猶如雨后春筍般的出現(xiàn)。把源文件轉(zhuǎn)換成字節(jié)碼文件,即可在各種環(huán)境中運(yùn)行,是Java語(yǔ)言的重要特征及顯耀的光芒,為何其具有如此強(qiáng)大的能力,歸根到底就是因?yàn)樘摂M機(jī)的重要作用。Java虛擬機(jī)在計(jì)算機(jī)編程領(lǐng)域又稱之為JVM,是一種用代碼語(yǔ)句來(lái)模擬計(jì)算機(jī)元件功能的實(shí)現(xiàn)包。

        大家都清楚,Java語(yǔ)言即不是一種完全解釋型的語(yǔ)言,也不是一種完全編譯型的語(yǔ)言,其源碼文件會(huì)在編譯命令的執(zhí)行過(guò)程中轉(zhuǎn)成字節(jié)碼文件,由于字節(jié)碼文件不是可執(zhí)行文件,因而其不能直接被操作系統(tǒng)調(diào)用執(zhí)行。字節(jié)碼是一種字節(jié)流文件,其以class類型的文件存在,是一種跟平臺(tái)不相耦合的類型文件,需要經(jīng)過(guò)JVM的翻譯轉(zhuǎn)換才能被硬件環(huán)境識(shí)別。Java平臺(tái)體系結(jié)構(gòu)可分為四層:最上面的為Java應(yīng)用程序?qū)?在此層的下面是API接口層,此層包含了眾多的JDK核心類庫(kù);再往下一層就是JVM位置所在,JVM在此層完成字節(jié)碼解釋轉(zhuǎn)換工作,JVM層與API層共同構(gòu)成Java語(yǔ)言的運(yùn)行時(shí)環(huán)境(JRE);最下面一層為機(jī)器硬件平臺(tái)層,此層直接執(zhí)行由JVM解釋出來(lái)的二進(jìn)制命令。

        3 虛擬機(jī)工作原理

        Java虛擬機(jī)是操作系統(tǒng)中的一個(gè)job,所有Java應(yīng)用程序均歸屬某一個(gè)虛擬機(jī)實(shí)例,當(dāng)運(yùn)行作為Java程序起點(diǎn)的Main方法時(shí),JVM便被創(chuàng)建。JVM便被創(chuàng)建后,在虛擬機(jī)job運(yùn)行過(guò)程中會(huì)創(chuàng)建守護(hù)線程,守護(hù)線程的作用是監(jiān)測(cè)非守護(hù)線程的執(zhí)行過(guò)程,保障程序的完整執(zhí)行,直到應(yīng)用程序的退出。

        Java虛擬機(jī)是連接應(yīng)用與操作平臺(tái)的橋梁,從字節(jié)碼文件變成可執(zhí)行的機(jī)器命令,JVM的工作過(guò)程包含七個(gè)步驟,分別是:字節(jié)碼裝載、字節(jié)流校驗(yàn)、靜態(tài)變量初始化、引用轉(zhuǎn)換、對(duì)象實(shí)例化、反射調(diào)用、GC回收,如表1所示。

        第一步,裝載class類型文件到內(nèi)存中。本階段的目標(biāo)是要對(duì)數(shù)據(jù)進(jìn)行初始化處理,銜接后繼步驟,完成整個(gè)JVM工作過(guò)程的第一步。

        在這一階段所要實(shí)現(xiàn)的具體內(nèi)容是要通過(guò)類名來(lái)定位并導(dǎo)入相關(guān)的字節(jié)流,并生成一個(gè)與此類相關(guān)聯(lián)的類型對(duì)象,作為該類的操作入口。

        第二步,進(jìn)行類的鏈接操作。在這一階段主要負(fù)責(zé)將二進(jìn)制字節(jié)流的數(shù)據(jù)裝入JRE環(huán)境,此階段包含三個(gè)過(guò)程:字節(jié)流校驗(yàn)、靜態(tài)變量分配內(nèi)存空間、引用轉(zhuǎn)換。

        驗(yàn)證過(guò)程完成對(duì)源碼類的檢查,以維護(hù)JVM自身的安全;準(zhǔn)備過(guò)程完成源碼類型結(jié)構(gòu)的初始化;解析過(guò)程直接對(duì)常量值初始化。

        第三步,進(jìn)行Java類的對(duì)象實(shí)例化過(guò)程。此步是加載過(guò)程最后一步,在此階段所要完成的任務(wù)是:執(zhí)行超類、子類中各種靜態(tài)語(yǔ)句塊,按順序執(zhí)行父類、子類的構(gòu)造器函數(shù)完成實(shí)例化過(guò)程。

        第四步,運(yùn)行Java類的相關(guān)功能。在此階段類的功能可以被機(jī)器以指令的方式執(zhí)行。

        第五步,卸載運(yùn)行完畢的類對(duì)象。經(jīng)過(guò)垃圾回收機(jī)制(GC)處理的最終會(huì)被JVM從內(nèi)存中卸載。

        4 虛擬機(jī)內(nèi)存管理

        虛擬機(jī)運(yùn)行時(shí)會(huì)將正在使用的內(nèi)存空間劃分為不同的區(qū)域,每個(gè)區(qū)域負(fù)責(zé)不同的功能,各個(gè)區(qū)域的創(chuàng)建,銷毀過(guò)程也都不相同??偟膩?lái)說(shuō),JVM內(nèi)存空間劃分為兩大塊,數(shù)據(jù)共享區(qū)與私有區(qū),每大塊又可以進(jìn)一步細(xì)分,如表2。

        全局變量區(qū):用于存儲(chǔ)源碼類中的全局變量,為各個(gè)線程的內(nèi)存數(shù)據(jù)共享區(qū)域。

        實(shí)例區(qū):存放用new關(guān)鍵字定義并經(jīng)過(guò)初始化的實(shí)例,此區(qū)空間會(huì)被GC釋放,同為數(shù)據(jù)共享區(qū)。

        局部變量區(qū):用于存儲(chǔ)源碼類中的局部變量,數(shù)據(jù)為特定線程專用。局部變量周期與實(shí)例線程相同,為數(shù)據(jù)私有區(qū),不可共享。

        本地方法區(qū):與局部變量區(qū)類似,只為本地局部Native方法使用,部分JVM中也會(huì)將其與虛擬機(jī)棧合并為一,同為數(shù)據(jù)私有區(qū),不可共享。

        字節(jié)碼指令區(qū):存儲(chǔ)實(shí)例線程下一步所要執(zhí)行的計(jì)算機(jī)指令,同為數(shù)據(jù)私有區(qū),不可共享。

        5 類加載機(jī)制

        在JRE環(huán)境中,有多個(gè)層級(jí)的類加載器,如表3所示。最頂層的為:JDK根類加載器(Bootstrap),此類為所有類加載器的總父類,次級(jí)類加載器(Extension)為其子類,直接繼承了此父加載器,次級(jí)加載器類下面同樣也存在一個(gè)繼承子類,三級(jí)類加載器(Application),在此子類中開放了自定義接口,自用戶可根據(jù)實(shí)際需要編碼以實(shí)現(xiàn)自定義加載器的開發(fā)。

        同時(shí)在JRE環(huán)境中,加載器的裝載過(guò)程采用的是向上傳遞裝載的實(shí)現(xiàn)方式,當(dāng)加載器收到請(qǐng)求要進(jìn)行類裝載時(shí),其會(huì)把相關(guān)請(qǐng)求發(fā)送給其直接父類,父加載器同樣會(huì)把請(qǐng)求向上遞歸傳遞,直到最頂層加載器。當(dāng)最頂層的加載器無(wú)法完成裝載任務(wù)時(shí),才會(huì)把請(qǐng)求交由子類完成,這就保證了在任務(wù)場(chǎng)景下類的加載任務(wù)均由最高的類加載器完成,保證了所有類型的實(shí)例對(duì)象具有相同的一致性,以避免應(yīng)用程序的混亂。

        6 結(jié)束語(yǔ)

        虛擬機(jī)并不是真正的機(jī)器,是一種通過(guò)代碼來(lái)實(shí)現(xiàn)硬件功能的插件包。虛擬機(jī)有自己的模擬硬件環(huán)境,如全局及局部變量區(qū)、本地方法區(qū)、字節(jié)碼區(qū)、實(shí)例區(qū)等,還有自己的指令系統(tǒng)。對(duì)Java語(yǔ)言跨平臺(tái)特性而言,虛擬機(jī)是其核心構(gòu)件,其直接關(guān)系應(yīng)用程序的完整、健康執(zhí)行,是Java語(yǔ)言的中樞組件。

        參考文獻(xiàn):

        [1]蘭斌.JVM優(yōu)點(diǎn)與缺點(diǎn)的深入分析[J].辦公自動(dòng)化,2013(3):22-24.

        [2]張鵬宇,鄭寶林.淺析JVM性能規(guī)范[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2011(3):111.

        [3]胡雯.Java虛擬機(jī)內(nèi)存分配探析[J].軟件導(dǎo)刊,2010(7):29-30.

        [4]劉冠梅.JAVA虛擬機(jī)技術(shù)研究與實(shí)踐思考[J].科技創(chuàng)新與應(yīng)用,2015(11):104-105.

        [5]楊文超.Java虛擬機(jī)內(nèi)存管理與優(yōu)化策略[J].電子測(cè)試,2013(10):43-44+62.

        [6]李卓恒.JAVA虛擬機(jī)相關(guān)技術(shù)研究與實(shí)踐[J].科技創(chuàng)新導(dǎo)報(bào),2018,15(01):156+158.

        [7]顧瑋.Java虛擬機(jī)的分析與研究[J].辦公自動(dòng)化,2017,22(09):35-36+11.

        猜你喜歡
        跨平臺(tái)
        跨層級(jí)網(wǎng)絡(luò)、跨架構(gòu)、跨平臺(tái)的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
        一款游戲怎么掙到全平臺(tái)的錢?
        潛力雙跨平臺(tái):進(jìn)階:誰(shuí)將跨入下一個(gè)“十大”?
        跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
        基于C++語(yǔ)言的跨平臺(tái)軟件開發(fā)的設(shè)計(jì)
        基于C++語(yǔ)言的跨平臺(tái)軟件開發(fā)
        移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)
        一種虛擬現(xiàn)實(shí)應(yīng)用程序跨平臺(tái)方法的研究
        基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
        基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
        日韩成人无码| 国产性色av一区二区| 亚洲偷自拍国综合第一页| 无码国产福利av私拍| 国产成人综合久久精品推| 久久精品视频按摩| av免费网站免费久久网| 人成午夜免费视频无码| 久久丫精品国产亚洲av| 亚欧视频无码在线观看| 国产精品国产三级国产剧情| 色偷偷av一区二区三区| 久久久精品久久日韩一区综合 | 亚洲av成人无码精品电影在线| 日韩国产一区| 久久久成人av毛片免费观看| 在线视频国产91自拍| 亚洲综合久久精品无码色欲| 亚洲AV无码成人品爱| 91亚洲精品久久久中文字幕| 少妇无码太爽了在线播放| 欧美人妻精品一区二区三区 | 国产精品视频永久免费播放| 国产精品久久久久久无码| 音影先锋色天堂av电影妓女久久| 国产精品亚洲一二三区| 天天摸夜夜摸夜夜狠狠摸| 女同啪啪免费网站www| 亚洲av乱码一区二区三区观影| 久久精品中文少妇内射| 思思久久96热在精品国产| 天天插天天干天天操| 国产麻豆一区二区三区在| yw尤物av无码国产在线观看| 欧美在线成人午夜网站| 日本熟妇裸体视频在线| 免费网站内射红桃视频| 国产乱子伦精品无码码专区| 午夜精品一区二区久久做老熟女| 日本h片中文字幕在线| 国产乱xxⅹxx国语对白|