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

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

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

來源: 責(zé)編: 時(shí)間:2024-05-11 09:17:10 129觀看
導(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)。RjQ28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

JVM 的定義

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

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

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

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

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

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

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

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

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

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

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

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

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

從編碼到運(yùn)行

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

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

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

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

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

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

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

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

JVM 已成為規(guī)范

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

三個(gè)方面回答這個(gè)問題:RjQ28資訊網(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上。

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

JVM 的后續(xù)了解

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

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

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

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

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

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

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

總結(jié)

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

  1. 所有高級(jí)編程語言編寫的程序最終要翻譯為機(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ì)那么困惑了。RjQ28資訊網(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)
  • 官方承諾:K60至尊版將會(huì)首批升級(jí)MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會(huì)搭載天璣9200+處理器和獨(dú)顯芯片X7的同時(shí),Redmi給出了官方承諾,K60至尊重大更新首批升級(jí),會(huì)首批推送MIUI 15。也就是說雖然
  • 影音體驗(yàn)是真的強(qiáng) 簡單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • Redmi Pad評(píng)測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍(lán)牙耳機(jī)到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機(jī)的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(chǔ)(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • JVM優(yōu)化:實(shí)戰(zhàn)OutOfMemoryError異常

    一、Java堆溢出堆內(nèi)存中主要存放對(duì)象、數(shù)組等,只要不斷地創(chuàng)建這些對(duì)象,并且保證 GC Roots 到對(duì)象之間有可達(dá)路徑來避免垃 圾收集回收機(jī)制清除這些對(duì)象,當(dāng)這些對(duì)象所占空間超過
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時(shí)不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺(tái)Keep正式登陸港交所,努力
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時(shí)間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進(jìn)展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號(hào)榮耀Magi
  • iQOO 11S評(píng)測:行業(yè)唯一的200W標(biāo)準(zhǔn)版旗艦

    【Techweb評(píng)測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),該機(jī)不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競
  • 機(jī)構(gòu)稱Q2全球智能手機(jī)出貨量同比下滑11% 蘋果份額依舊第2

    7月20日消息,據(jù)外媒報(bào)道,研究機(jī)構(gòu)的報(bào)告顯示,由于需求下滑,今年二季度全球智能手機(jī)的出貨量,同比下滑了11%,三星、蘋果等主要廠商的銷量,較去年同期均有下
Top