亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學習啦 > 知識大全 > 知識百科 > 百科知識 > 什么是jvmjvm的原理

      什么是jvmjvm的原理

      時間: 謝君787 分享

      什么是jvmjvm的原理

        JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。那么你對JVM了解多少呢?以下是由學習啦小編整理關(guān)于什么是jvm的內(nèi)容,希望大家喜歡!

        jvm的原理

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

        java編譯器只需面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。

        JVM執(zhí)行程序的過程 :

        I.加載.class文件

        II.管理并分配內(nèi)存

        III.執(zhí)行垃圾收集

        JRE(java運行時環(huán)境)包含JVM的java程序的運行環(huán)境

        JVM是Java程序運行的容器,但是他同時也是操作系統(tǒng)的一個進程,因此他也有他自己的運行的生命周期,也有自己的代碼和數(shù)據(jù)空間。

        JVM在整個jdk中處于最底層,負責與操作系統(tǒng)的交互,用來屏蔽操作系統(tǒng)環(huán)境,提供一個完整的Java運行環(huán)境,因此也就虛擬計算機.操作系統(tǒng)裝入JVM是通過jdk中Java.exe來完成,通過下面4步來完成JVM環(huán)境。

        1.創(chuàng)建JVM裝載環(huán)境和配置

        2.裝載JVM.dll

        3.初始化JVM.dll并掛接到JNIENV(JNI調(diào)用接口)實例

        4.調(diào)用JNIEnv實例裝載并處理class類。

        jvm的支持類型

        基本數(shù)據(jù)類型

        byte://1字節(jié)有符號整數(shù)的補碼

        short://2字節(jié)有符號整數(shù)的補碼

        int://4字節(jié)有符號整數(shù)的補碼

        long://8字節(jié)有符號整數(shù)的補碼

        float://4字節(jié)IEEE754單精度浮點數(shù)

        double://8字節(jié)IEEE754雙精度浮點數(shù)

        char://2字節(jié)無符號Unicode字符

        幾乎所有的Java類型檢查都是在編譯時完成的。上面列出的原始數(shù)據(jù)類型的數(shù)據(jù)在Java執(zhí)行時不需要用硬件標記。操作這些原始數(shù)據(jù)類型數(shù)據(jù)的字節(jié)碼(指令)本身就已經(jīng)指出了操作數(shù)的數(shù)據(jù)類型,例如iadd、ladd、fadd和dadd指令都是把兩個數(shù)相加,其操作數(shù)類型別是int、long、float和double。虛擬機沒有給boolean(布爾)類型設(shè)置單獨的指令。boolean型的數(shù)據(jù)是由integer指令,包括integer返回來處理的。boolean型的數(shù)組則是用byte數(shù)組來處理的。虛擬機使用IEEE754格式的浮點數(shù)。不支持IEEE格式的較舊的計算機,在運行Java數(shù)值計算程序時,可能會非常慢。

        其它數(shù)據(jù)類型

        object//對一個Javaobject(對象)的4字節(jié)引用

        returnAddress//4字節(jié),用于jsr/ret/jsr-w/ret-w指令

        注:Java數(shù)組被當做object處理。

        虛擬機的規(guī)范對于object內(nèi)部的結(jié)構(gòu)沒有任何特殊的要求。在Sun公司的實現(xiàn)中,對object的引用是一個句柄,其中包含一對指針:一個指針指向該object的方法表,另一個指向該object的數(shù)據(jù)。用Java虛擬機的字節(jié)碼表示的程序應(yīng)該遵守類型規(guī)定。Java虛擬機的實現(xiàn)應(yīng)拒絕執(zhí)行違反了類型規(guī)定的字節(jié)碼程序。Java虛擬機由于字節(jié)碼定義的限制似乎只能運行于32位地址空間的機器上。但是可以創(chuàng)建一個Java虛擬機,它自動地把字節(jié)碼轉(zhuǎn)換成64位的形式。從Java虛擬機支持的數(shù)據(jù)類型可以看出,Java對數(shù)據(jù)類型的內(nèi)部格式進行了嚴格規(guī)定,這樣使得各種Java虛擬機的實現(xiàn)對數(shù)據(jù)的解釋是相同的,從而保證了Java的與平臺無關(guān)性和可移植性。

        jvm的指令系統(tǒng)

        JVM指令系統(tǒng)同其他計算機的指令系統(tǒng)極其相似。Java指令也是由操作碼和操作數(shù)兩部分組成。操作碼為8位二進制數(shù),操作數(shù)緊隨在操作碼的后面,其長度根據(jù)需要而不同。操作碼用于指定一條指令操作的性質(zhì)(在這里我們采用匯編符號的形式進行說明),如iload表示從存儲器中裝入一個整數(shù),anewarray表示為一個新數(shù)組分配空間,iand表示兩個整數(shù)的"與",ret用于流程控制,表示從對某一方法的調(diào)用中返回。當長度大于8位時,操作數(shù)被分為兩個以上字節(jié)存放。JVM采用了"big endian"的編碼方式來處理這種情況,即高位bits存放在低字節(jié)中。這同 Motorola及其他的RISC CPU采用的編碼方式是一致的,而與Intel采用的"little endian "的編碼方式即低位bits存放在低位字節(jié)的方法不同。Java指令系統(tǒng)是以Java語言的實現(xiàn)為目的設(shè)計的,其中包含了用于調(diào)用方法和監(jiān)視多線程系統(tǒng)的指令。Java的8位操作碼的長度使得JVM最多有256種指令,已使用了160多種操作碼。
      看過“jvm的原理”的人還看了:

      1.jvm內(nèi)存大小怎么設(shè)

      2.JVM 內(nèi)存設(shè)置大小

      3.java項目內(nèi)存溢出怎么解決

      4.Linux中怎么配置Java環(huán)境變量

      5.java會內(nèi)存溢出嗎

      6.k3導航用什么內(nèi)存卡

      1883258