最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之源文件的執(zhí)行全過程

 更新時(shí)間:2024年03月25日 16:37:07   作者:perseveregz  
這篇文章主要介紹了Java之源文件的執(zhí)行全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.JVM

1.定義:Java虛擬機(jī)

2.作用:運(yùn)行Java字節(jié)碼文件

3.實(shí)現(xiàn)方式:針對不同的操作系統(tǒng)(Windows、MacOS、Linux)存在不同的實(shí)現(xiàn)方式。目的是運(yùn)行相同的Java字節(jié)碼文件,在不同系統(tǒng)中給出相同的結(jié)果

4.自定義JVM:只要滿足JVM規(guī)范,就可以自定義自己的JVM

2.字節(jié)碼

1.定義:字節(jié)碼就是JVM能夠處理的代碼,是面向虛擬機(jī)

2.優(yōu)點(diǎn):由于字節(jié)碼是面向虛擬機(jī)的,因此在不同操作系統(tǒng)可以無需重新編譯;并且執(zhí)行效率高

3.Java源文件執(zhí)行的過程

過程:Java源文件--->javac編譯--->.class文件(字節(jié)碼文件)--->解釋運(yùn)行--->機(jī)器碼

重點(diǎn):字節(jié)碼文件到機(jī)器碼這一過程中,Java的類的加載器需要先將字節(jié)碼文件加載到內(nèi)存中,然后解釋器開始逐行解釋執(zhí)行,這樣做效率低。

引入JIT(just in Time Compilation)運(yùn)行時(shí)編譯器,能夠在編譯后將字節(jié)碼文件對應(yīng)的機(jī)器碼保存下來,機(jī)器碼的運(yùn)行效率是比較高的。

4.JIT(Just In Time Compilation)

1.定義:運(yùn)行時(shí)編譯器;在對字節(jié)碼文件解釋運(yùn)行時(shí)邊運(yùn)行邊編譯,并將編譯后字節(jié)碼文件對應(yīng)的機(jī)器碼保存下來,從而提高程序運(yùn)行效率

2.優(yōu)點(diǎn):根據(jù)內(nèi)存中實(shí)際情況調(diào)整代碼;根據(jù)運(yùn)行情況生成最優(yōu)機(jī)器指令序列

缺點(diǎn):需要占用運(yùn)行時(shí)資源,導(dǎo)致程序卡頓;編譯準(zhǔn)備和識別時(shí)會(huì)占用時(shí)間,使得初始編譯不能達(dá)到最高性能

5.AOT(Ahead Of Time Compilation)

1.定義:提前編譯器;對字節(jié)碼文件在執(zhí)行前就編譯為機(jī)器碼;可以減少JIT初始編譯時(shí)無法達(dá)到最高性能的問題 

2.優(yōu)點(diǎn):在程序編譯前編譯,避免在運(yùn)行中占用系統(tǒng)資源;在程序運(yùn)行初期就達(dá)到最高性能

缺點(diǎn):提前編譯會(huì)占用更多外存;犧牲了Java的動(dòng)態(tài)性

6.AOT破壞Java動(dòng)態(tài)性

Java中的反射機(jī)制是動(dòng)態(tài)獲取運(yùn)行時(shí)類的對象及調(diào)用運(yùn)行時(shí)類的方法,此時(shí)只能采用JIT進(jìn)行編譯;

采用AOT,則全部已經(jīng)提前編譯,無法動(dòng)態(tài)的修改運(yùn)行時(shí)類的屬性

7.編譯型語言與解釋型語言

編譯型:通過編譯器將源代碼一次性翻譯為可以被平臺執(zhí)行的機(jī)器碼

  • 優(yōu)點(diǎn):執(zhí)行速度快
  • 缺點(diǎn):開發(fā)效率低
  • 實(shí)例:C、C++、Go

解釋型:通過解釋器將代碼逐行解釋為機(jī)器碼后,被平臺執(zhí)行

  • 優(yōu)點(diǎn):開發(fā)效率高
  • 缺點(diǎn):執(zhí)行速度慢
  • 實(shí)例:Python、JavaScript

8.Java-編譯與解釋并存的語言

為改善編譯語言的效率,將編譯和運(yùn)行相結(jié)合,使得具有編譯語言和解釋語言二者的優(yōu)點(diǎn)。

在Java中,先將程序源代碼編譯為字節(jié)碼文件;在執(zhí)行時(shí),再將字節(jié)碼文件解釋為機(jī)器碼

9.Java和C++的相同點(diǎn)與不同點(diǎn)

相同點(diǎn):都是面向?qū)ο蟮恼Z言;都支持封裝、繼承、多態(tài)

不同點(diǎn):

  • Java不提供指針直接訪問內(nèi)存,程序更安全
  • Java類是單繼承,C++的類支持多繼承
  • Java存在GC垃圾自動(dòng)回收,無法手動(dòng)釋放無用內(nèi)存
  • C++支持方法重載和操作符重載,Java只支持方法重載

10.Oracle JDK 和 Open JDK

Sun公司2006將Java開源,因此有了Open JDK

Oracle公司2009年收購了Sun公司,在Open JDK基礎(chǔ)上整理出Oracle JDK,Oracle JDK不開源

二者區(qū)別:

  • 是否開源:Oracle JDK是不完全開源的,Open JDK是開源的
  • 是否免費(fèi):Oracle JDK僅僅3年免費(fèi),Open JDK免費(fèi)
  • 功能性:Oracle JDK相比于Open JDK添加了特有的功能和工具

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何分析算法的時(shí)間和空間復(fù)雜度

    Java如何分析算法的時(shí)間和空間復(fù)雜度

    這篇文章主要介紹了Java如何分析算法的時(shí)間和空間復(fù)雜度,在計(jì)算機(jī)科學(xué)中,計(jì)算復(fù)雜性解釋了算法的性能。文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • Java經(jīng)典排序算法之冒泡排序代碼實(shí)例

    Java經(jīng)典排序算法之冒泡排序代碼實(shí)例

    這篇文章主要介紹了Java經(jīng)典排序算法之冒泡排序代碼實(shí)例,相鄰兩元素進(jìn)行比較,如過左側(cè)元素大于右側(cè)元素,則進(jìn)行交換,每完成一次循環(huán)就將最大元素排在最后,下一次循環(huán)是將其它的數(shù)進(jìn)行類似操作,需要的朋友可以參考下
    2023-11-11
  • SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用

    SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用

    這篇文章主要介紹了SpringCloud實(shí)戰(zhàn)之Feign聲明式服務(wù)調(diào)用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 如何對spring框架的搭建進(jìn)行封裝--springboot

    如何對spring框架的搭建進(jìn)行封裝--springboot

    這篇文章主要介紹了如何對spring框架的搭建進(jìn)行封裝--springboot,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor

    Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor

    這篇文章主要為大家介紹了Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 支持生產(chǎn)阻塞的Java線程池

    支持生產(chǎn)阻塞的Java線程池

    在各種并發(fā)編程模型中,生產(chǎn)者-消費(fèi)者模式大概是最常用的了。在實(shí)際工作中,對于生產(chǎn)消費(fèi)的速度,通常需要做一下權(quán)衡
    2014-04-04
  • Java IO之File 類詳解

    Java IO之File 類詳解

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java引用機(jī)制之強(qiáng)引用、軟引用、弱引用和虛引用的實(shí)戰(zhàn)指南

    Java引用機(jī)制之強(qiáng)引用、軟引用、弱引用和虛引用的實(shí)戰(zhàn)指南

    Java 的引用機(jī)制是垃圾回收(GC)體系中極為關(guān)鍵的一部分,不同引用類型代表不同的對象生命周期管理方式,Java 從 JDK 1.2 起提供了四種引用級別強(qiáng)引用、軟引用、弱引用和虛引用,本文將逐一講解它們的特點(diǎn)、內(nèi)存行為、適用場景,并提供實(shí)踐示例代碼
    2025-12-12
  • mybatis實(shí)現(xiàn)獲取入?yún)⑹荓ist和Map的取值

    mybatis實(shí)現(xiàn)獲取入?yún)⑹荓ist和Map的取值

    這篇文章主要介紹了mybatis實(shí)現(xiàn)獲取入?yún)⑹荓ist和Map的取值問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java MethodHandle的使用詳解

    Java MethodHandle的使用詳解

    這篇文章主要介紹了Java MethodHandle的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

璧山县| 满城县| 天台县| 永康市| 湘潭县| 云林县| 大港区| 色达县| 金山区| 巴彦淖尔市| 新河县| 喀什市| 星座| 阿图什市| 龙陵县| 大城县| 林芝县| 金坛市| 应城市| 文水县| 苗栗县| 浏阳市| 泗水县| 沐川县| 锡林浩特市| 霍邱县| 遵义县| 牟定县| 双桥区| 永春县| 雅江县| 高要市| 四平市| 钟祥市| 疏附县| 虎林市| 承德县| 萨嘎县| 丘北县| 固镇县| 论坛|