什么是Java虛擬機(jī)
Java程序必須在虛擬機(jī)上運(yùn)行。那么虛擬機(jī)到底是什么呢?先看網(wǎng)上搜索到的比較靠譜的解釋:
虛擬機(jī)是一種抽象化的計(jì)算機(jī),通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。Java虛擬機(jī)有自己完善的硬體架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。
這種解釋應(yīng)該算是正確的,但是只描述了虛擬機(jī)的外部行為和功能,并沒有針對(duì)內(nèi)部原理做出說明。一般情況下我們不需要知道虛擬機(jī)的運(yùn)行原理,只要專注寫java代碼就可以了,這也正是虛擬機(jī)之所以存在的原因--屏蔽底層操作系統(tǒng)平臺(tái)的不同并且減少基于原生語言開發(fā)的復(fù)雜性,使java這門語言能夠跨各種平臺(tái)(只要虛擬機(jī)廠商在特定平臺(tái)上實(shí)現(xiàn)了虛擬機(jī)),并且簡(jiǎn)單易用。這些都是虛擬機(jī)的外部特性,但是從這些信息來解釋虛擬機(jī),未免太籠統(tǒng)了,無法讓我們知道內(nèi)部原理。
從進(jìn)程的角度解釋JVM
讓我們嘗試從操作系統(tǒng)的層面來理解虛擬機(jī)。我們知道,虛擬機(jī)是運(yùn)行在操作系統(tǒng)之中的,那么什么東西才能在操作系統(tǒng)中運(yùn)行呢?當(dāng)然是進(jìn)程,因?yàn)檫M(jìn)程是操作系統(tǒng)中的執(zhí)行單位。可以這樣理解,當(dāng)它在運(yùn)行的時(shí)候,它就是一個(gè)操作系統(tǒng)中的進(jìn)程實(shí)例,當(dāng)它沒有在運(yùn)行時(shí)(作為可執(zhí)行文件存放于文件系統(tǒng)中),可以把它叫做程序。
對(duì)命令行比較熟悉的同學(xué),都知道其實(shí)一個(gè)命令對(duì)應(yīng)一個(gè)可執(zhí)行的二進(jìn)制文件,當(dāng)敲下這個(gè)命令并且回車后,就會(huì)創(chuàng)建一個(gè)進(jìn)程,加載對(duì)應(yīng)的可執(zhí)行文件到進(jìn)程的地址空間中,并且執(zhí)行其中的指令。下面對(duì)比C語言和Java語言的HelloWorld程序來說明問題。
首先編寫C語言版的HelloWorld程序。
#include <stdio.h> #include <stdlib.h> int main(void) { printf("hello world\n"); return 0; }
文章名稱:深入理解Java虛擬機(jī)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://m.kartarina.com/article6/ejoig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、品牌網(wǎng)站建設(shè)、App設(shè)計(jì)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容