国产成人v爽在线免播放观看,日韩欧美色,久久99国产精品久久99软件,亚洲综合色网站,国产欧美日韩中文久久,色99在线,亚洲伦理一区二区

學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > 什么是jvmjvm的原理

什么是jvmjvm的原理

時間: 謝君787 分享

什么是jvmjvm的原理

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

  jvm的原理

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

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

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

  I.加載.class文件

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

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

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

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

  JVM在整個jdk中處于最底層,負(fù)責(zé)與操作系統(tǒng)的交互,用來屏蔽操作系統(tǒng)環(huán)境,提供一個完整的Java運行環(huán)境,因此也就虛擬計算機(jī).操作系統(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ù)的補(bǔ)碼

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

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

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

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

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

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

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

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

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

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

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

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

  jvm的指令系統(tǒng)

  JVM指令系統(tǒng)同其他計算機(jī)的指令系統(tǒng)極其相似。Java指令也是由操作碼和操作數(shù)兩部分組成。操作碼為8位二進(jìn)制數(shù),操作數(shù)緊隨在操作碼的后面,其長度根據(jù)需要而不同。操作碼用于指定一條指令操作的性質(zhì)(在這里我們采用匯編符號的形式進(jìn)行說明),如iload表示從存儲器中裝入一個整數(shù),anewarray表示為一個新數(shù)組分配空間,iand表示兩個整數(shù)的"與",ret用于流程控制,表示從對某一方法的調(diào)用中返回。當(dāng)長度大于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導(dǎo)航用什么內(nèi)存卡

1883258