六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

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

什么是jvmjvm的原理

時(shí)間: 謝君787 分享

什么是jvmjvm的原理

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

  jvm的原理

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

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

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

  I.加載.class文件

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

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

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

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

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

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

  2.裝載JVM.dll

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

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

  jvm的支持類(lèi)型

  基本數(shù)據(jù)類(lèi)型

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

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

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

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

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

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

  char://2字節(jié)無(wú)符號(hào)Unicode字符

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

  其它數(shù)據(jù)類(lèi)型

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

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

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

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

  jvm的指令系統(tǒng)

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

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

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

3.java項(xiàng)目?jī)?nèi)存溢出怎么解決

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

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

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

1883258