特黄特色三级在线观看免费,看黄色片子免费,色综合久,欧美在线视频看看,高潮胡言乱语对白刺激国产,伊人网成人,中文字幕亚洲一碰就硬老熟妇

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

什么是jvmjvm的原理

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

什么是jvmjvm的原理

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

  jvm的原理

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

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

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

  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)的交互,用來屏蔽操作系統(tǒng)環(huán)境,提供一個(gè)完整的Java運(yùn)行環(huán)境,因此也就虛擬計(jì)算機(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)用接口)實(shí)例

  4.調(diào)用JNIEnv實(shí)例裝載并處理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單精度浮點(diǎn)數(shù)

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

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

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

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

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

  jvm的指令系統(tǒng)

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

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

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

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

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

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

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

1883258