国产三级在线看完整版-内射白嫩大屁股在线播放91-欧美精品国产精品综合-国产精品视频网站一区-一二三四在线观看视频韩国-国产不卡国产不卡国产精品不卡-日本岛国一区二区三区四区-成年人免费在线看片网站-熟女少妇一区二区三区四区

儀器網(wǎng)(yiqi.com)歡迎您!

| 注冊(cè)2 登錄
網(wǎng)站首頁(yè)-資訊-話題-產(chǎn)品-評(píng)測(cè)-品牌庫(kù)-供應(yīng)商-展會(huì)-招標(biāo)-采購(gòu)-知識(shí)-技術(shù)-社區(qū)-資料-方案-產(chǎn)品庫(kù)-視頻

問(wèn)答社區(qū)

什么是Java虛擬機(jī)?

kingdandanjz 2006-01-03 14:33:57 379  瀏覽
  •  

參與評(píng)論

全部評(píng)論(3條)

  • liming8398078 2006-01-04 00:00:00
    Java虛擬機(jī)(JVM)是Java Virtual Machine的縮寫,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能模擬來(lái)實(shí)現(xiàn)的。Java虛擬機(jī)有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。

    贊(8)

    回復(fù)(0)

    評(píng)論

  • 王菲19852010 2017-09-01 00:00:00
    Java虛擬機(jī) 一、什么是Java虛擬機(jī) Java虛擬機(jī)是一個(gè)想象中的機(jī)器,在實(shí)際的計(jì)算機(jī)上通過(guò)軟件模擬來(lái)實(shí)現(xiàn)。Java虛擬機(jī)有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。 1.為什么要使用Java虛擬機(jī) Java語(yǔ)言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無(wú)關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。一般的高級(jí)語(yǔ)言如果要在不同的平臺(tái)上運(yùn)行,至少需要編譯成不同的目標(biāo)代碼。而引入Java語(yǔ)言虛擬機(jī)后,Java語(yǔ)言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。Java語(yǔ)言使用模式Java虛擬機(jī)屏蔽了與具體平臺(tái)相關(guān)的信息,使得Java語(yǔ)言編譯程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)行字節(jié)碼時(shí),把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。 2.誰(shuí)需要了解Java虛擬機(jī) Java虛擬機(jī)是Java語(yǔ)言底層實(shí)現(xiàn)的基礎(chǔ),對(duì)Java語(yǔ)言感興趣的人都應(yīng)對(duì)Java虛擬機(jī)有個(gè)大概的了解。這有助于理解Java語(yǔ)言的一些性質(zhì),也有助于使用Java語(yǔ)言。對(duì)于要在特定平臺(tái)上實(shí)現(xiàn)Java虛擬機(jī)的軟件人員,Java語(yǔ)言的編譯器作者以及要用硬件芯片實(shí)現(xiàn)Java虛擬機(jī)的人來(lái)說(shuō),則必須深刻理解Java虛擬機(jī)的規(guī)范。另外,如果你想擴(kuò)展Java語(yǔ)言,或是把其它語(yǔ)言編譯成Java語(yǔ)言的字節(jié)碼,你也需要深入地了解Java虛擬機(jī)。 3.Java虛擬機(jī)支持的數(shù)據(jù)類型 Java虛擬機(jī)支持Java語(yǔ)言的基本數(shù)據(jù)類型如下: 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類型檢查都是在編譯時(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ī)沒(méi)有給boolean(布爾)類型設(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ì)非常慢。 虛擬機(jī)支持的其它數(shù)據(jù)類型包括: 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)該遵守類型規(guī)定。Java虛擬機(jī)的實(shí)現(xiàn)應(yīng)拒絕執(zhí)行違反了類型規(guī)定的字節(jié)碼程序。Java虛擬機(jī)由于字節(jié)碼定義的限制似乎只能運(yùn)行于32位地址空間的機(jī)器上。但是可以創(chuàng)建一個(gè)Java虛擬機(jī),它自動(dòng)地把字節(jié)碼轉(zhuǎn)換成64位的形式。從Java虛擬機(jī)支持的數(shù)據(jù)類型可以看出,Java對(duì)數(shù)據(jù)類型的內(nèi)部格式進(jìn)行了嚴(yán)格規(guī)定,這樣使得各種Java虛擬機(jī)的實(shí)現(xiàn)對(duì)數(shù)據(jù)的解釋是相同的,從而保證了Java的與平臺(tái)無(wú)關(guān)性和可 移植性。 二、Java虛擬機(jī)體系結(jié)構(gòu) Java虛擬機(jī)由五個(gè)部分組成:一組指令集、一組寄存器、一個(gè)棧、一個(gè)無(wú)用單元收集堆(Garbage-collected-heap)、一個(gè)方法區(qū)域。這五部分是Java虛擬機(jī)的邏輯成份,不依賴任何實(shí)現(xiàn)技術(shù)或組織方式,但它們的功能必須在真實(shí)機(jī)器上以某種方式實(shí)現(xiàn)。 1.Java指令集 Java虛擬機(jī)支持大約248個(gè)字節(jié)碼。每個(gè)字節(jié)碼執(zhí)行一種基本的CPU運(yùn)算,例如,把一個(gè)整數(shù)加到寄存器,子程序轉(zhuǎn)移等。Java指令集相當(dāng)于Java程序的匯編語(yǔ)言。 Java指令集中的指令包含一個(gè)單字節(jié)的操作符,用于指定要執(zhí)行的操作,還有0個(gè)或多個(gè)操作數(shù),提供操作所需的參數(shù)或數(shù)據(jù)。許多指令沒(méi)有操作數(shù),僅由一個(gè)單字節(jié)的操作符構(gòu)成。 虛擬機(jī)的內(nèi)層循環(huán)的執(zhí)行過(guò)程如下: do{ 取一個(gè)操作符字節(jié); 根據(jù)操作符的值執(zhí)行一個(gè)動(dòng)作; }while(程序未結(jié)束) 由于指令系統(tǒng)的簡(jiǎn)單性,使得虛擬機(jī)執(zhí)行的過(guò)程十分簡(jiǎn)單,從而有利于提高執(zhí)行的效率。指令中操作數(shù)的數(shù)量和大小是由操作符決定的。如果操作數(shù)比一個(gè)字節(jié)大,那么它存儲(chǔ)的順序是高位字節(jié)優(yōu)先。例如,一個(gè)16位的參數(shù)存放時(shí)占用兩個(gè)字節(jié),其值為: diyi個(gè)字節(jié)*256+第二個(gè)字節(jié)字節(jié)碼指令流一般只是字節(jié)對(duì)齊的。指令tableswitch和lookup是例外,在這兩條指令內(nèi)部要求強(qiáng)制的4字節(jié)邊界對(duì)齊。 2.寄存器 Java虛擬機(jī)的寄存器用于保存機(jī)器的運(yùn)行狀態(tài),與微處理器中的某些專用寄存器類似。 Java虛擬機(jī)的寄存器有四種: pc:Java程序計(jì)數(shù)器。 optop:指向操作數(shù)棧頂端的指針。 frame:指向當(dāng)前執(zhí)行方法的執(zhí)行環(huán)境的指針。 vars:指向當(dāng)前執(zhí)行方法的局部變量區(qū)diyi個(gè)變量的指針。 Java虛擬機(jī) Java虛擬機(jī)是棧式的,它不定義或使用寄存器來(lái)傳遞或接受參數(shù),其目的是為了保證指令集的簡(jiǎn)潔性和實(shí)現(xiàn)時(shí)的GX性(特別是對(duì)于寄存器數(shù)目不多的處理器)。 所有寄存器都是32位的。 3.棧 Java虛擬機(jī)的棧有三個(gè)區(qū)域:局部變量區(qū)、運(yùn)行環(huán)境區(qū)、操作數(shù)區(qū)。 (1)局部變量區(qū) 每個(gè)Java方法使用一個(gè)固定大小的局部變量集。它們按照與vars寄存器的字偏移量來(lái)尋址。局部變量都是32位的。長(zhǎng)整數(shù)和雙精度浮點(diǎn)數(shù)占據(jù)了兩個(gè)局部變量的空間,卻按照diyi個(gè)局部變量的索引來(lái)尋址。(例如,一個(gè)具有索引n的局部變量,如果是一個(gè)雙精度浮點(diǎn)數(shù),那么它實(shí)際占據(jù)了索引n和n+1所代表的存儲(chǔ)空間。)虛擬機(jī)規(guī)范并不要求在局部變量中的64位的值是64位對(duì)齊的。虛擬機(jī)提供了把局部變量中的值裝載到操作數(shù)棧的指令,也提供了把操作數(shù)棧中的值寫入局部變量的指令。 (2)運(yùn)行環(huán)境區(qū) 在運(yùn)行環(huán)境中包含的信息用于動(dòng)態(tài)鏈接,正常的方法返回以及異常傳播。 ·動(dòng)態(tài)鏈接 運(yùn)行環(huán)境包括對(duì)指向當(dāng)前類和當(dāng)前方法的解釋器符號(hào)表的指針,用于支持方法代碼的動(dòng)態(tài)鏈接。方法的class文件代碼在引用要調(diào)用的方法和要訪問(wèn)的變量時(shí)使用符號(hào)。動(dòng)態(tài)鏈接把符號(hào)形式的方法調(diào)用翻譯成實(shí)際方法調(diào)用,裝載必要的類以解釋還沒(méi)有定義的符號(hào),并把變量訪問(wèn)翻譯成與這些變量運(yùn)行時(shí)的存儲(chǔ)結(jié)構(gòu)相應(yīng)的偏移地址。動(dòng)態(tài)鏈接方法和變量使得方法中使用的其它類的變化不會(huì)影響到本程序的代碼。 ·正常的方法返回 如果當(dāng)前方法正常地結(jié)束了,在執(zhí)行了一條具有正確類型的返回指令時(shí),調(diào)用的方法會(huì)得到一個(gè)返回值。執(zhí)行環(huán)境在%

    贊(10)

    回復(fù)(0)

    評(píng)論

  • jasonng1999 2018-07-29 00:00:00
    Java虛擬機(jī)全稱:java virtual machine; 是Java開(kāi)發(fā)語(yǔ)言中,用來(lái)運(yùn)行Java字節(jié)碼文件的平臺(tái);通俗的講,就是一個(gè)程序。 它提供對(duì)Java字節(jié)碼的解釋及運(yùn)行,從而使Java語(yǔ)言能獨(dú)立于各個(gè)系統(tǒng)平臺(tái)。

    贊(19)

    回復(fù)(0)

    評(píng)論

熱門問(wèn)答

什么是Java虛擬機(jī)?
 
2006-01-03 14:33:57 379 3
java虛擬機(jī)的作用
 
2018-02-21 05:48:47 369 2
一個(gè)java虛擬機(jī)只能支持一個(gè)進(jìn)程嗎
 
2017-11-21 14:22:55 451 2
什么是 Java 部署工具包
 
2017-01-16 18:06:27 368 1
什么是虛擬機(jī),干什么用的
什么是虛擬機(jī),干什么用的,安裝后對(duì)電腦有什么影響啊?... 什么是虛擬機(jī),干什么用的,安裝后對(duì)電腦有什么影響?。? 展開(kāi)
2013-02-17 06:24:31 520 3
為什么安裝ug時(shí)顯示沒(méi)有配備的java虛擬機(jī)
 
2015-06-08 18:15:57 949 3
java -jar在Linux下運(yùn)行問(wèn)題 在虛擬機(jī)中執(zhí)行
[weblogic@localhost~]$java-jarwls1036_generic.jarbash:java:commandnotfound是不是環(huán)節(jié)變量沒(méi)配置,哪位高手請(qǐng)教下?... [weblogic@localhost ~]$ java -jar wls1036_generic.jar bash: java: command not found 是不是環(huán)節(jié)變量沒(méi)配置,哪位高手請(qǐng)教下? 展開(kāi)
2017-04-11 14:01:42 378 2
JAVA編程是用什么軟件的?
JAVA編程是用什么軟件的?
2011-07-24 03:53:06 576 6
虛擬機(jī)是干什么使的?
他們說(shuō)不是安雙系統(tǒng)的誒,那要他有什么用?... 他們說(shuō)不是安雙系統(tǒng)的誒,那要他有什么用? 展開(kāi)
2012-01-09 03:23:58 412 3
虛擬機(jī)是什么,有什么好處
 
2017-11-16 17:30:45 350 2
Java開(kāi)發(fā)工程師與Java軟件工程師有什么不同?
 
2012-09-12 02:10:11 328 5
急求深入理解Java虛擬機(jī)JVM高級(jí)特性與Z佳實(shí)踐 源碼
 
2012-12-26 04:27:30 403 3
java編程要用什么軟件
 
2013-02-14 10:36:53 385 4
JAVA計(jì)時(shí)器的JAVA代碼
要求有計(jì)時(shí),分別計(jì)時(shí)并且顯示(每次按下按鈕分別計(jì)時(shí)顯示出來(lái)),就像體育老師的計(jì)跑步的計(jì)時(shí)器一樣,可以讀到每個(gè)撞線的人的成績(jī)。三個(gè)按鍵,開(kāi)始,分別計(jì)時(shí),結(jié)束。
2011-05-21 11:40:40 421 2
虛擬機(jī)的作用,有什么優(yōu)缺點(diǎn)
 
2009-11-19 10:54:48 430 3
虛擬機(jī)是什么
虛擬機(jī)是什么... 虛擬機(jī)是什么 展開(kāi)
2010-06-23 01:30:59 470 6
虛擬機(jī)是怎樣運(yùn)行的,原理是什么?
它是通過(guò)什么方式虛擬出一個(gè)操作系統(tǒng)的?謝謝解答.... 它是通過(guò)什么方式虛擬出一個(gè)操作系統(tǒng)的?謝謝解答. 展開(kāi)
2017-09-17 17:19:39 575 2
虛擬機(jī)的運(yùn)行環(huán)境是怎樣的?
興趣很大,幫忙了解。... 興趣很大,幫忙了解。 展開(kāi)
2017-10-01 14:45:31 492 1
java測(cè)試類黃色表示什么
 
2017-03-20 08:07:08 305 3
JAVA語(yǔ)言開(kāi)發(fā)軟件有什么優(yōu)勢(shì)?
 
2017-02-16 16:56:09 483 1

4月突出貢獻(xiàn)榜

推薦主頁(yè)

最新話題