久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > Java 并發(fā)編程解析 | Java JVM虛擬機(jī)、運(yùn)行過(guò)程

Java 并發(fā)編程解析 | Java JVM虛擬機(jī)、運(yùn)行過(guò)程

來(lái)源:千鋒教育
發(fā)布人:qyf
時(shí)間: 2022-08-02 17:46:00 1659433560

  Java JVM虛擬機(jī)

2


  在開(kāi)始這一部分內(nèi)容之前,我們先來(lái)看一下,在Java中,Java程序是如何運(yùn)行的,最后又是如何交給JVM托管的?

3

  1.Java 程序運(yùn)行過(guò)程

4

  作為一名 Java 程序員,你應(yīng)該知道,Java 代碼有很多種不同的運(yùn)行方式。比如說(shuō)可以在開(kāi)發(fā)工具中運(yùn)行,可以雙擊執(zhí)行 jar 文件運(yùn)行,也可以在命令行中運(yùn)行,甚至可以在網(wǎng)頁(yè)中運(yùn)行。當(dāng)然,這些執(zhí)行方式都離不開(kāi) JRE,也就是 Java 運(yùn)行時(shí)環(huán)境。

  實(shí)際上,JRE 僅包含運(yùn)行 Java 程序的必需組件,包括 Java 虛擬機(jī)以及 Java 核心類庫(kù)等。我們 Java 程序員經(jīng)常接觸到的 JDK(Java 開(kāi)發(fā)工具包)同樣包含了 JRE,并且還附帶了一系列開(kāi)發(fā)、診斷工具。

  然而,運(yùn)行 C++ 代碼則無(wú)需額外的運(yùn)行時(shí)。我們往往把這些代碼直接編譯成 CPU 所能理解的代碼格式,也就是機(jī)器碼。

  Java 作為一門高級(jí)程序語(yǔ)言,它的語(yǔ)法非常復(fù)雜,抽象程度也很高。因此,直接在硬件上運(yùn)行這種復(fù)雜的程序并不現(xiàn)實(shí)。所以呢,在運(yùn)行 Java 程序之前,我們需要對(duì)其進(jìn)行一番轉(zhuǎn)換。

  這個(gè)轉(zhuǎn)換具體是怎么操作的呢?當(dāng)前的主流思路是這樣子的,設(shè)計(jì)一個(gè)面向 Java 語(yǔ)言特性的虛擬機(jī),并通過(guò)編譯器將 Java 程序轉(zhuǎn)換成該虛擬機(jī)所能識(shí)別的指令序列,也稱 Java 字節(jié)碼。這里順便說(shuō)一句,之所以這么取名,是因?yàn)?Java 字節(jié)碼指令的操作碼(opcode)被固定為一個(gè)字節(jié)。

  并且,我們同樣可以將其反匯編為人類可讀的代碼格式(如下圖的最右列所示)。不同的是,Java 版本的編譯結(jié)果相對(duì)精簡(jiǎn)一些。這是因?yàn)?Java 虛擬機(jī)相對(duì)于物理機(jī)而言,抽象程度更高。

  Java 虛擬機(jī)可以由硬件實(shí)現(xiàn)[1],但更為常見(jiàn)的是在各個(gè)現(xiàn)有平臺(tái)(如 Windows_x64、Linux_aarch64)上提供軟件實(shí)現(xiàn)。這么做的意義在于,一旦一個(gè)程序被轉(zhuǎn)換成 Java 字節(jié)碼,那么它便可以在不同平臺(tái)上的虛擬機(jī)實(shí)現(xiàn)里運(yùn)行。這也就是我們經(jīng)常說(shuō)的“一次編寫,到處運(yùn)行”。

  虛擬機(jī)的另外一個(gè)好處是它帶來(lái)了一個(gè)托管環(huán)境(Managed Runtime)。這個(gè)托管環(huán)境能夠代替我們處理一些代碼中冗長(zhǎng)而且容易出錯(cuò)的部分。其中最廣為人知的當(dāng)屬自動(dòng)內(nèi)存管理與垃圾回收,這部分內(nèi)容甚至催生了一波垃圾回收調(diào)優(yōu)的業(yè)務(wù)。

  除此之外,托管環(huán)境還提供了諸如數(shù)組越界、動(dòng)態(tài)類型、安全權(quán)限等等的動(dòng)態(tài)檢測(cè),使我們免于書(shū)寫這些無(wú)關(guān)業(yè)務(wù)邏輯的代碼。

  更多關(guān)于“java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽(tīng)。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢(shì)和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問(wèn)題是什么?

ORM(對(duì)象關(guān)系映射)解決的主要問(wèn)題是將關(guān)系數(shù)據(jù)庫(kù)與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)以表格的形式存儲(chǔ),而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語(yǔ)言是一種以簡(jiǎn)潔和有效性為目標(biāo)的編程語(yǔ)言,因此在設(shè)計(jì)過(guò)程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說(shuō)的平臺(tái)是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺(tái)”這個(gè)詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開(kāi)發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對(duì)”平臺(tái)”這個(gè)概念的更深入...詳情>>

2023-10-14 11:55:36
什么是PowerPivot?

什么是PowerPivotPowerPivot,全稱”PowerPivot for Excel”,是Microsoft提供的一種數(shù)據(jù)分析工具,可以作為Excel的插件使用。通過(guò)PowerPivot,...詳情>>

2023-10-14 11:25:48