日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

這是一篇給Java初學(xué)者看的JVM文章

來源: 責(zé)編: 時間:2024-05-11 09:17:10 157觀看
導(dǎo)讀前言很多Java開發(fā)人員,還不清楚JVM是什么,就直接涉足JVM調(diào)優(yōu)。很多Java開發(fā)人員,說起JVM,只知道運行時數(shù)據(jù)區(qū)域(或稱之為JVM內(nèi)存布局或JVM內(nèi)存結(jié)構(gòu))。還有很多Java開發(fā)人員,在被問起:“你知道Java內(nèi)存模型嗎?”,答:“知道,Java內(nèi)

前言

很多Java開發(fā)人員,還不清楚JVM是什么,就直接涉足JVM調(diào)優(yōu)。9Et28資訊網(wǎng)——每日最新資訊28at.com

很多Java開發(fā)人員,說起JVM,只知道運行時數(shù)據(jù)區(qū)域(或稱之為JVM內(nèi)存布局或JVM內(nèi)存結(jié)構(gòu))。9Et28資訊網(wǎng)——每日最新資訊28at.com

還有很多Java開發(fā)人員,在被問起:“你知道Java內(nèi)存模型嗎?”,答:“知道,Java內(nèi)存模型分為方法區(qū)、堆、...”。9Et28資訊網(wǎng)——每日最新資訊28at.com

......9Et28資訊網(wǎng)——每日最新資訊28at.com

雖說“概念”這個詞發(fā)明出來是為了方便交流和說明問題的,不用太過于較真。但是,答非所問就是你的不對了。9Et28資訊網(wǎng)——每日最新資訊28at.com

如果你屬于其中一者,我勸你看完這篇文章。9Et28資訊網(wǎng)——每日最新資訊28at.com

本文就一個目的:認(rèn)識JVM。9Et28資訊網(wǎng)——每日最新資訊28at.com

從 Java 的跨平臺特性說起

認(rèn)識JVM應(yīng)該從哪里入手?9Et28資訊網(wǎng)——每日最新資訊28at.com

可以問自己幾個問題,為什么有JVM?沒有JVM會怎樣?9Et28資訊網(wǎng)——每日最新資訊28at.com

Java編程語言設(shè)計的初衷就是要解決一個問題:程序員編寫一次程序,可以在任何提供Java運行時環(huán)境的機(jī)器上運行。9Et28資訊網(wǎng)——每日最新資訊28at.com

也就是Java語言的跨平臺特性“一次編寫,到處運行”。9Et28資訊網(wǎng)——每日最新資訊28at.com

這一點可以在官方提供的文檔里證實:9Et28資訊網(wǎng)——每日最新資訊28at.com

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html9Et28資訊網(wǎng)——每日最新資訊28at.com

可能有些Java開發(fā)人員對跨平臺特性不是很理解:“不應(yīng)該就是編寫一次到處運行嗎?”。9Et28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然不是,如果了解C、C++語言的,就知道,想要在不同平臺上運行,需要分別編譯,甚至重新編寫。9Et28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然,這是所有編程語言都存在的問題。原因下面有說明。9Et28資訊網(wǎng)——每日最新資訊28at.com

那么,Java是如何解決的?9Et28資訊網(wǎng)——每日最新資訊28at.com

Java 跨平臺的實現(xiàn):JVM

Java之所以能實現(xiàn)跨平臺,離不開JVM的支持。9Et28資訊網(wǎng)——每日最新資訊28at.com

下面對此展開說明。9Et28資訊網(wǎng)——每日最新資訊28at.com

JVM 的定義

JVM,全稱:Java Virtual Machine (Java 虛擬機(jī))。9Et28資訊網(wǎng)——每日最新資訊28at.com

下面是官方對JVM的定義:9Et28資訊網(wǎng)——每日最新資訊28at.com

Java虛擬機(jī)是一種抽象的計算機(jī)。就像真正的計算機(jī)一樣,它有一個指令集,并在運行時處理各種內(nèi)存區(qū)域。9Et28資訊網(wǎng)——每日最新資訊28at.com

這個說明已經(jīng)非常簡單明了了。如果不理解的繼續(xù)看下文。9Et28資訊網(wǎng)——每日最新資訊28at.com

跨平臺問題說明

任何一個高級編程語言編寫的程序,在最終執(zhí)行前,都會被翻譯成計算機(jī)可以理解的語言:機(jī)器碼,也就是諸如0101的二進(jìn)制數(shù)。9Et28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片9Et28資訊網(wǎng)——每日最新資訊28at.com

這些機(jī)器碼就是指令的實際表示,計算機(jī)的工作原理就是通過執(zhí)行這些指令來完成具體的任務(wù)。9Et28資訊網(wǎng)——每日最新資訊28at.com

(每一條指令中明確規(guī)定了計算機(jī)從哪個地址取數(shù),進(jìn)行什么操作,然后送到什么地址去等步驟)9Et28資訊網(wǎng)——每日最新資訊28at.com

而同一個操作,在不同的平臺,指令可能會有所不同。9Et28資訊網(wǎng)——每日最新資訊28at.com

例如,“將數(shù)據(jù)從內(nèi)存加載到寄存器”的操作,在x86架構(gòu)和ARM架構(gòu)中,指令就不一樣:9Et28資訊網(wǎng)——每日最新資訊28at.com

  • 在x86架構(gòu)中,可能會使用MOV指令將數(shù)據(jù)加載到寄存器EAX中:
MOV EAX, [0x12345678]
  • 在ARM架構(gòu)中,可能會使用LDR指令將數(shù)據(jù)加載到寄存器R0中:
LDR R0, [0x12345678]

所以,在一個平臺上編寫的程序要在其他平臺上運行,就需要重新編譯,甚至重寫。否則就會出現(xiàn)下圖現(xiàn)象。9Et28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片9Et28資訊網(wǎng)——每日最新資訊28at.com

這也正是跨平臺問題存在的根本原因。9Et28資訊網(wǎng)——每日最新資訊28at.com

從編碼到運行

而JVM作為一個抽象的計算機(jī),對外提供了一套自己的指令集,作用何在?9Et28資訊網(wǎng)——每日最新資訊28at.com

JVM指令集作用是:在不同平臺運行符合自己指令的程序時,會將該指令轉(zhuǎn)換成當(dāng)前機(jī)器的本地指令。9Et28資訊網(wǎng)——每日最新資訊28at.com

這樣就避免了多次編譯的操作,從而實現(xiàn)“一次編寫,到處運行”。9Et28資訊網(wǎng)——每日最新資訊28at.com

或者這樣理解:JVM替代了多次編譯的工作。9Et28資訊網(wǎng)——每日最新資訊28at.com

那么,“符合自己指令的程序”是什么呢?9Et28資訊網(wǎng)——每日最新資訊28at.com

沒錯,就是Java字節(jié)碼(class文件)。9Et28資訊網(wǎng)——每日最新資訊28at.com

我們平時在編寫完.java源碼后,會經(jīng)過JDK提供的編譯工具(javac)編譯為.class,而.class文件里面的內(nèi)容就是JVM指令。9Et28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片9Et28資訊網(wǎng)——每日最新資訊28at.com

JVM 已成為規(guī)范

可能會有人有疑問,“為什么javac不直接編譯成機(jī)器碼?”9Et28資訊網(wǎng)——每日最新資訊28at.com

三個方面回答這個問題:9Et28資訊網(wǎng)——每日最新資訊28at.com

  1. 如果javac直接編譯成機(jī)器碼,就又回到跨平臺的問題了。
  2. JVM除了解決跨平臺問題外,還負(fù)責(zé)了內(nèi)存管理和安全性的問題。
  3. 發(fā)展至今,JVM已經(jīng)成為了一種規(guī)范,只要符合JVM規(guī)范,支持任何語言運行在JVM上。

圖片圖片9Et28資訊網(wǎng)——每日最新資訊28at.com

JVM 的后續(xù)了解

通過上面的描述,如果理解了JVM是什么、JVM的作用或者JVM存在的意義,那就算是入門了。9Et28資訊網(wǎng)——每日最新資訊28at.com

如果激發(fā)了你對“JVM指令是什么”以及“它們?nèi)绾伪晦D(zhuǎn)換成機(jī)器指令”的好奇心,或者產(chǎn)生“類加載和JVM的關(guān)系”、“垃圾回收器和JVM的關(guān)系”等疑問。9Et28資訊網(wǎng)——每日最新資訊28at.com

那么,請關(guān)注我,后面的文章會帶你一起了解。或者,自己可以去官方進(jìn)行了解,官方文檔鏈接給你放在這。9Et28資訊網(wǎng)——每日最新資訊28at.com

Java 各版本文檔:9Et28資訊網(wǎng)——每日最新資訊28at.com

https://docs.oracle.com/en/java/javase/9Et28資訊網(wǎng)——每日最新資訊28at.com

Java語言&JVM規(guī)范文檔:9Et28資訊網(wǎng)——每日最新資訊28at.com

https://docs.oracle.com/javase/specs/index.html9Et28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

最后總結(jié)一下本文內(nèi)容:9Et28資訊網(wǎng)——每日最新資訊28at.com

  1. 所有高級編程語言編寫的程序最終要翻譯為機(jī)器碼(指令的實際表示)才能被計算機(jī)理解。
  2. 由于計算機(jī)的硬件架構(gòu)、操作系統(tǒng)不同,同一個操作指令可能也會不同。所以,程序要想在不同平臺上運行,需要重新翻譯或編寫。
  3. Java最初是為了解決程序跨平臺運行的問題,JVM正是實現(xiàn)跨平臺特性的關(guān)鍵所在。
  4. Java語言編寫的程序會被編譯為Java字節(jié)碼,也就是JVM自身的指令。運行時,JVM會將指令轉(zhuǎn)換成本地機(jī)器指令,從而實現(xiàn)跨平臺。
  5. JVM發(fā)展至今,已然是一個規(guī)范,已支持上百種編程語言。

當(dāng)了解了JVM的作用、存在的意義,再去了解JVM的工作原理就不會那么困惑了。9Et28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-87960-0.html這是一篇給Java初學(xué)者看的JVM文章

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 總結(jié)CSS中各個屬性使用百分比(%)基準(zhǔn)值

下一篇: 騰訊互娛面經(jīng)詳解

標(biāo)簽:
  • 熱門焦點
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達(dá)到了中國第一,同時還表示小米電視的巨屏風(fēng)暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • 5月iOS設(shè)備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數(shù)據(jù),像安卓陣營的榜單都有著比較大的變動,不過iOS由于設(shè)備的更新?lián)Q代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設(shè)
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現(xiàn)場視頻讓網(wǎng)友吵翻

    近日,上海青浦區(qū)法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當(dāng)時男子駕駛轎車在上海某路段行駛,前車忽然轉(zhuǎn)彎提速超車,
  • Raft算法:保障分布式系統(tǒng)共識的穩(wěn)健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復(fù)制、可冗余、可容錯”)的首字母縮寫。Raft算法是一種用于在分布式系統(tǒng)
  • 三言兩語說透設(shè)計模式的藝術(shù)-單例模式

    寫在前面單例模式是一種常用的軟件設(shè)計模式,它所創(chuàng)建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級

    來源 | 伯虎財經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經(jīng)無忌7月16日晚,上海1862時尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊,拿下了總決
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
Top 主站蜘蛛池模板: 正蓝旗| 棋牌| 庆云县| 土默特右旗| 石嘴山市| 安仁县| 老河口市| 泸水县| 久治县| 宜黄县| 伊宁县| 鄂托克前旗| 新津县| 沧源| 闵行区| 玉林市| 斗六市| 太原市| 丰都县| 麻江县| 海兴县| 临西县| 吉林市| 乌兰察布市| 漾濞| 大关县| 赤水市| 墨竹工卡县| 芷江| 时尚| 德阳市| 建湖县| 格尔木市| 班戈县| 介休市| 静宁县| 合肥市| 南投市| 辽阳县| 姚安县| 无极县|