一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JVM入門之認(rèn)識(shí)程序運(yùn)行本質(zhì)

jf_78858299 ? 來源:北洋洋洋 ? 作者:北洋 ? 2023-02-10 11:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

JVM是什么

剛?cè)腴T的時(shí)候老師教我們寫代碼是這樣的:

?

JAVA文件然后用javac命令編譯成class文件運(yùn)行即可。

?

隨著學(xué)習(xí)的不斷拓展和工作中業(yè)務(wù)代碼的積累,對(duì)于“為什么會(huì)這樣”的困惑越來越多,于是寫了這篇博客~。

計(jì)算機(jī)能看懂的是二進(jìn)制,也就是0和1。那么我們的JAVA程序和計(jì)算機(jī)又有什么關(guān)聯(lián)呢?他們是怎么聯(lián)系到一起的?

匯編語(yǔ)言

計(jì)算機(jī)只能識(shí)別0和1,人們發(fā)現(xiàn)利用0和1可以做很多事情:

?

比如可以做加法,由此減乘法除法(利用的也是加法)也可以做到;與,或,異或等這些構(gòu)成了與門,非門等這些邏輯門;......在這上面進(jìn)行擴(kuò)展又可以做很多事情。

?

但是編寫0和1太過于麻煩,這個(gè)時(shí)候出現(xiàn)了助記符也就是用一個(gè)英文代表一串01的數(shù)字,也就是匯編語(yǔ)言。

高級(jí)語(yǔ)言

對(duì)于開發(fā)者來說,用匯編寫代碼不太現(xiàn)實(shí),一個(gè)簡(jiǎn)單的操作要用很多行匯編代碼才能實(shí)現(xiàn),所以再它之上做了處理,比如java,c,等等高級(jí)語(yǔ)言。那么計(jì)算機(jī)怎么識(shí)別高級(jí)語(yǔ)言的呢?

虛擬機(jī)是什么

答案是虛擬機(jī),虛擬機(jī)可以理解為虛擬計(jì)算機(jī),虛擬計(jì)算機(jī)通過解釋器將其認(rèn)識(shí)的指令解釋為計(jì)算機(jī)認(rèn)識(shí)的指令。JVM中只通過解釋器來解釋運(yùn)行效率太慢,所以對(duì)于熱點(diǎn)代碼即反復(fù)執(zhí)行的代碼通過JIT即時(shí)編譯器將其編譯為本地代碼。這個(gè)編譯器叫做后端編譯器。

?

JVM流行的一點(diǎn)原因是其跨平臺(tái)性:一次編譯,多端運(yùn)行

怎么實(shí)現(xiàn)的大家也大概猜到了,JVM虛擬機(jī)識(shí)別操作系統(tǒng)將class字節(jié)碼轉(zhuǎn)換為不同操作系統(tǒng)可以識(shí)別的指令。

?

java代碼如何轉(zhuǎn)換成機(jī)器識(shí)別的代碼

我們寫代碼的時(shí)候通過編寫JAVA文件,通過javac命令編譯成class文件,用java命令運(yùn)行class文件。

拆分:一,也就是javac命令將java代碼編譯成為java字節(jié)碼也就是class文件,這個(gè)編譯器叫做前端編譯器。編譯后的class文件由0和1構(gòu)成,這其實(shí)是java字節(jié)碼的結(jié)構(gòu)。

二,通過類加載器ClassLoader的加載,鏈接,初始化后將其轉(zhuǎn)換為JVM內(nèi)存中的數(shù)據(jù)。我們要想看到class字節(jié)碼結(jié)構(gòu)是什么樣的,可以通過反編譯class文件,講解JAVA字節(jié)碼文件將在后面博客中詳細(xì)介紹。

三,執(zhí)行引擎將高級(jí)語(yǔ)言翻譯為機(jī)器語(yǔ)言即計(jì)算機(jī)能夠識(shí)別的語(yǔ)言。

總結(jié):前端編譯器將Java文件轉(zhuǎn)換為字節(jié)碼class文件,通過類加載器ClassLoader的加載,鏈接,初始化這三步加載到內(nèi)存中,JVM識(shí)別字節(jié)碼文件將數(shù)據(jù)放到對(duì)應(yīng)的內(nèi)存結(jié)構(gòu)中,但是機(jī)器不認(rèn)識(shí)這些字節(jié)碼文件,所以執(zhí)行引擎又進(jìn)行了編譯轉(zhuǎn)化為計(jì)算機(jī)能夠識(shí)別的指令【后端編譯器】,其充當(dāng)了轉(zhuǎn)換字節(jié)碼的任務(wù)(通過解釋器解釋運(yùn)行,但是由于效率低,所以對(duì)于熱點(diǎn)代碼通過JIT即時(shí)編譯器編譯成本地代碼)

最后來張圖:圖中運(yùn)行時(shí)數(shù)據(jù)區(qū)為JVM內(nèi)存結(jié)構(gòu)中的,下一篇博客進(jìn)行講解~。

在這里插入圖片描述

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    805

    瀏覽量

    42248
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2988

    瀏覽量

    108504
  • Class
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    20058
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    12567
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Jvm的整體結(jié)構(gòu)和特點(diǎn)

    、JVM特點(diǎn)    首先一次編譯處處運(yùn)行是學(xué)習(xí)Java語(yǔ)言都知道的事情,其實(shí)并不是Java語(yǔ)言跨平臺(tái),是JVM跨平臺(tái),Jvm運(yùn)行時(shí)并不是執(zhí)行
    發(fā)表于 01-05 17:23

    電機(jī)的本質(zhì)運(yùn)行原理是什么

    本文章持續(xù)更新模型的搭建和文章關(guān)注我的博客吧下面是我以視頻的形式做的講解,有興趣的同學(xué)的可以去看看1.電機(jī)的本質(zhì)運(yùn)行原理是什么?這個(gè)視頻可以在你入門是給你一個(gè)新的視角來看待電機(jī)
    發(fā)表于 09-06 06:55

    數(shù)字電池EDA入門VHDL程序實(shí)現(xiàn)集

    數(shù)字電池EDA入門VHDL程序實(shí)現(xiàn)集
    發(fā)表于 12-07 14:14 ?0次下載

    Jvm工作原理學(xué)習(xí)筆記

    JVM實(shí)例對(duì)應(yīng)了一個(gè)獨(dú)立運(yùn)行的java程序它是進(jìn)程級(jí)別 a) 啟動(dòng)。啟動(dòng)一個(gè)Java程序時(shí),一個(gè)JVM實(shí)例就產(chǎn)生了,任何一個(gè)擁有public
    發(fā)表于 04-03 11:03 ?5次下載

    用JMX連接本地JVM運(yùn)行的Java程序

    如果有人問你,如何用JMX連接本地JVM運(yùn)行的Java程序,你會(huì)怎么回答? 其實(shí),他只是想開發(fā)一個(gè)JMX的客戶端來配置一個(gè)本地Java程序。這個(gè)時(shí)候,千萬(wàn)不要推薦JConsole,因
    發(fā)表于 04-03 15:11 ?4次下載

    Java程序是如何運(yùn)行

    的,什么是JVM;要理解我們編寫的Java程序,運(yùn)行起來以后到底是什么樣子,本質(zhì)上就是弄清楚JVM是什么樣子。 Java
    的頭像 發(fā)表于 12-27 09:31 ?2016次閱讀

    Java:JVM虛擬機(jī)的入門知識(shí)

    Java開發(fā)現(xiàn)在面試越來越難了,進(jìn)大廠必備的JVM、多線程高并發(fā)這都是最基礎(chǔ)的知識(shí)了,今天我們一起來學(xué)習(xí)Java虛擬機(jī)入門。
    的頭像 發(fā)表于 07-01 11:43 ?2488次閱讀
    Java:<b class='flag-5'>JVM</b>虛擬機(jī)的<b class='flag-5'>入門</b>知識(shí)

    JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)堆內(nèi)存

    說一下 JVM 運(yùn)行時(shí)數(shù)據(jù)區(qū)吧,都有哪些區(qū)?分別是干什么的?
    的頭像 發(fā)表于 08-19 14:35 ?942次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>運(yùn)行</b>時(shí)數(shù)據(jù)區(qū)<b class='flag-5'>之</b>堆內(nèi)存

    jvm內(nèi)存溢出故障排查

    JVM內(nèi)存溢出是常見且令人頭疼的問題,特別是在運(yùn)行大型Java應(yīng)用程序或長(zhǎng)時(shí)間運(yùn)行的應(yīng)用程序時(shí)。當(dāng)JVM
    的頭像 發(fā)表于 12-05 11:04 ?1139次閱讀

    jvm內(nèi)存模型和內(nèi)存結(jié)構(gòu)

    JVM(Java虛擬機(jī))是Java程序運(yùn)行平臺(tái),它負(fù)責(zé)將Java程序轉(zhuǎn)換成機(jī)器碼并在計(jì)算機(jī)上執(zhí)行。在JVM中,內(nèi)存模型和內(nèi)存結(jié)構(gòu)是兩個(gè)重要
    的頭像 發(fā)表于 12-05 11:08 ?1210次閱讀

    jvm調(diào)優(yōu)參數(shù)

    JVM(Java虛擬機(jī))是Java程序運(yùn)行環(huán)境,它負(fù)責(zé)解釋Java字節(jié)碼并執(zhí)行相應(yīng)的指令。為了提高應(yīng)用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)JVM
    的頭像 發(fā)表于 12-05 11:29 ?941次閱讀

    jvm哪些區(qū)域會(huì)發(fā)生oom

    JVM 是 Java 虛擬機(jī)的縮寫,是Java程序運(yùn)行平臺(tái)。JVM 內(nèi)存被劃分為不同的區(qū)域,每個(gè)區(qū)域負(fù)責(zé)不同的任務(wù)和存儲(chǔ)不同類型的數(shù)據(jù)。其中,一些區(qū)域容易發(fā)生內(nèi)存溢出錯(cuò)誤(Out
    的頭像 發(fā)表于 12-05 11:51 ?1731次閱讀

    jvm運(yùn)行時(shí)內(nèi)存區(qū)域劃分

    JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,它是Java編程語(yǔ)言的運(yùn)行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機(jī)器代碼,并且在運(yùn)行時(shí)管理Java
    的頭像 發(fā)表于 12-05 14:08 ?714次閱讀

    weblogic jvm參數(shù)配置

    在WebLogic中,JVM參數(shù)配置是非常重要的,它可以對(duì)應(yīng)用程序的性能和穩(wěn)定性產(chǎn)生直接影響。JVM參數(shù)通過調(diào)整Java虛擬機(jī)的運(yùn)行時(shí)行為,可以優(yōu)化內(nèi)存管理、垃圾回收以及線程管理等方面
    的頭像 發(fā)表于 12-05 14:31 ?1884次閱讀

    weblogic設(shè)置jvm內(nèi)存大小

    如何設(shè)置WebLogic服務(wù)器的JVM內(nèi)存大小。 一、了解JVM內(nèi)存 JVM(Java Virtual Machine)是Java應(yīng)用程序運(yùn)行
    的頭像 發(fā)表于 12-05 14:44 ?3617次閱讀