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

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

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

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

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

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

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

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

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

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

從 Java 的跨平臺特性說起

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

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

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

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

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

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

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

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

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

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

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

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

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

JVM 的定義

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

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

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

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

跨平臺問題說明

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

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

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

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

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

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

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

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

從編碼到運行

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

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

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

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

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

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

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

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

JVM 已成為規(guī)范

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

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

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

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

JVM 的后續(xù)了解

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

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

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

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

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

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

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

總結(jié)

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

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

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

本文鏈接:http://m.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)簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品xvideos88| 美女黄网久久| 亚洲日本va午夜在线电影| 亚洲高清免费在线| 日韩视频一区二区三区在线播放 | 国产精品成人aaaaa网站| 国产精品入口| 狠狠色综合播放一区二区| 亚洲国产黄色| 亚洲在线观看视频网站| 欧美在线免费视频| 欧美 日韩 国产在线| 国产精品xxx在线观看www| 国产欧美日韩视频一区二区| 亚洲国产精品一区二区第四页av | 国产日本亚洲高清| 亚洲破处大片| 午夜精品一区二区三区在线| 国内精品国语自产拍在线观看| 激情另类综合| avtt综合网| 久久久精品一区二区三区| 欧美日韩国产另类不卡| 国产欧美日韩在线视频| 亚洲人成人一区二区在线观看| 一区二区电影免费观看| 久久精品日韩欧美| 欧美三级在线视频| 在线观看亚洲a| 亚洲专区在线视频| 欧美mv日韩mv国产网站| 国产九九精品| 99精品视频一区二区三区| 久久久成人精品| 欧美午夜在线视频| 亚洲国产日韩欧美| 欧美亚洲一区二区在线| 欧美精品午夜| 一区二区三区我不卡| 亚洲一区二区三区中文字幕在线| 免费看的黄色欧美网站| 国产欧美欧美| 在线一区日本视频| 欧美激情视频一区二区三区不卡| 国产一区二区三区免费不卡| 中文在线不卡视频| 欧美国产日韩在线| 国产一区二区剧情av在线| 一本一本久久a久久精品牛牛影视| 久久蜜桃香蕉精品一区二区三区| 国产精品你懂的在线欣赏| 亚洲激情视频网| 久久久噜噜噜久久狠狠50岁| 国产精品毛片高清在线完整版 | 久久国产精彩视频| 国产精品久久一级| 日韩午夜精品视频| 免费人成网站在线观看欧美高清| 国产亚洲成年网址在线观看| 亚洲午夜在线视频| 欧美日韩精品二区| 亚洲精品久久久久久久久久久久久 | 狠狠色丁香久久婷婷综合_中| 亚洲一区自拍| 欧美日韩一区二区三区四区五区 | 国产一区二区三区四区在线观看| 亚洲午夜精品久久久久久app| 欧美精品一区二区高清在线观看| 韩国久久久久| 欧美在线观看一区| 国产欧美日韩一区| 午夜精品一区二区三区在线播放| 国产精品vvv| 亚洲视频在线一区| 欧美深夜影院| 亚洲一级网站| 国产精品高潮久久| 亚洲综合欧美| 国产精品入口| 欧美在线91| 国产一区二区剧情av在线| 久久国产日本精品| 国产在线播放一区二区三区| 欧美在线关看| 国产精品一区一区| 欧美尤物一区| 国产主播喷水一区二区| 久久精品亚洲| 一区二区三区在线不卡| 久久夜色精品国产欧美乱| 一色屋精品视频在线看| 免费观看久久久4p| 亚洲精品专区| 欧美日韩一区二| 亚洲欧美国内爽妇网| 国产欧美日韩综合一区在线播放 | 免费的成人av| 亚洲精品在线观看视频| 欧美日韩不卡| 亚洲一区日韩在线| 国产亚洲成av人片在线观看桃| 欧美在线地址| 在线免费观看日韩欧美| 欧美国产视频一区二区| 99v久久综合狠狠综合久久| 欧美色视频日本高清在线观看| 亚洲欧美久久久| 国产深夜精品福利| 久久综合伊人77777| 亚洲激情在线播放| 欧美视频三区在线播放| 先锋影音久久久| 一区精品久久| 欧美日韩国产免费| 亚洲欧美日韩成人高清在线一区| 国产美女高潮久久白浆| 久久另类ts人妖一区二区| 亚洲欧洲日韩在线| 国产精品乱码久久久久久| 欧美专区在线观看| 亚洲韩日在线| 国产精品久久久久久久电影| 久久国内精品视频| 亚洲欧洲在线一区| 国产精品色婷婷久久58| 久久综合色婷婷| 一本大道久久精品懂色aⅴ | 91久久精品一区| 国产精品乱子乱xxxx| 久久久久久久久伊人| 亚洲久久一区| 国产日产欧产精品推荐色 | 久久亚洲国产成人| 一本久道久久久| 国产一区二区欧美| 欧美美女视频| 久久国产精品毛片| 亚洲免费电影在线| 国产情人节一区| 欧美韩国日本综合| 欧美亚洲视频在线看网址| 亚洲高清av| 国产精品电影在线观看| 老司机精品视频网站| 亚洲午夜精品17c| 狠狠色丁香婷综合久久| 欧美三级小说| 麻豆久久婷婷| 亚洲欧美日韩另类| 亚洲日本成人网| 国产亚洲综合性久久久影院| 欧美精品亚洲| 久久人人爽爽爽人久久久| 亚洲一区二区在线看| 亚洲高清在线观看一区| 国产农村妇女精品一区二区| 欧美高清在线视频| 久久久91精品国产| 亚洲午夜久久久| 亚洲国内欧美| 伊人久久大香线| 国产精品一区在线观看| 欧美伦理91| 老色鬼精品视频在线观看播放| 亚洲一级片在线观看| 亚洲国产日韩欧美在线动漫| 国产亚洲视频在线观看| 国产精品极品美女粉嫩高清在线| 免费看黄裸体一级大秀欧美| 午夜在线精品偷拍| 一区二区三区成人精品| 亚洲国产精品嫩草影院| 国产自产精品| 国产欧美成人| 欧美体内she精视频在线观看| 免费成人黄色片| 久久久99免费视频| 午夜国产一区| 亚洲香蕉成视频在线观看| 亚洲美女精品成人在线视频| 在线国产亚洲欧美| 黄色另类av| 国内精品美女av在线播放| 国产精品青草综合久久久久99| 欧美日韩国产精品一卡| 欧美激情欧美激情在线五月| 免费影视亚洲| 裸体女人亚洲精品一区| 久久精品国产视频| 欧美一级精品大片| 亚洲综合国产精品| 亚洲视频在线播放| 亚洲网站啪啪| 亚洲一区二区视频在线观看| 一本久道久久综合婷婷鲸鱼| 亚洲精品国产精品国自产在线| 1024日韩| 亚洲大胆人体在线| 影音先锋亚洲一区| 在线精品视频一区二区| 在线日韩av永久免费观看| 激情综合网激情| 亚洲第一色中文字幕| 亚洲成人在线网站|