AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

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

來源: 責(zé)編: 時(shí)間:2024-05-11 09:17:10 173觀看
導(dǎo)讀前言很多Java開發(fā)人員,還不清楚JVM是什么,就直接涉足JVM調(diào)優(yōu)。很多Java開發(fā)人員,說起JVM,只知道運(yùn)行時(shí)數(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)。5dR28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

從 Java 的跨平臺(tái)特性說起

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

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

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

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

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

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

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

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

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

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

Java 跨平臺(tái)的實(shí)現(xiàn):JVM

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

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

JVM 的定義

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

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

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

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

跨平臺(tái)問題說明

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

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

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

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

而同一個(gè)操作,在不同的平臺(tái),指令可能會(huì)有所不同。5dR28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

從編碼到運(yùn)行

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

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

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

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

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

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

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

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

JVM 已成為規(guī)范

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

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

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

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

JVM 的后續(xù)了解

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

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

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

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

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

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

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

總結(jié)

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

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

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

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

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

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

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

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會(huì)以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 8月總票房已突破10億!《封神》第一:口碑已經(jīng)成了

    8月5日消息,據(jù)燈塔專業(yè)版數(shù)據(jù),截至8月5日9時(shí)35分,8月總票房(含預(yù)售)已突破10億。其中,《封神》以大比分的優(yōu)勢領(lǐng)先。根據(jù)官方消息,目前該片總票房已經(jīng)超過14.
  • 分布式系統(tǒng)中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統(tǒng)的小伙伴們來說,一提起分布式系統(tǒng),就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統(tǒng)
  • 自動(dòng)化在DevOps中的力量:簡化軟件開發(fā)和交付

    自動(dòng)化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動(dòng)化工具和方法,DevOps團(tuán)隊(duì)可以實(shí)現(xiàn)以下目標(biāo):消除手動(dòng)和重復(fù)性任務(wù)。簡化流程。在整個(gè)軟件開發(fā)生命周期中實(shí)現(xiàn)更
  • 2023年,我眼中的字節(jié)跳動(dòng)

    此時(shí)此刻(2023年7月),字節(jié)跳動(dòng)從未上市,也從未公布過任何官方的上市計(jì)劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強(qiáng)勢崛起,到2018年的“頭騰
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價(jià)值研究所 作者:Hernanderz“難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營上的問題,選擇逃避了嗎?”這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 滴滴違法違規(guī)被罰80.26億 共存在16項(xiàng)違法事實(shí)

    滴滴違法違規(guī)被罰80.26億 存在16項(xiàng)違法事實(shí)開始于2121年7月,歷經(jīng)一年時(shí)間,網(wǎng)絡(luò)安全審查辦公室對“滴滴出行”網(wǎng)絡(luò)安全審查終于有了一個(gè)暫時(shí)的結(jié)束。據(jù)“網(wǎng)信
  • AI藝術(shù)欣賞體驗(yàn)會(huì)在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯(cuò)的鏡像世界,虛實(shí)幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現(xiàn)在2019世界人工智能大會(huì)的舞臺(tái)上。8月29日至31日,“AI藝術(shù)欣賞體驗(yàn)會(huì)”在上海
Top