国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淺談Java文件被執行的歷程

瀏覽:36日期:2022-08-11 14:56:10
目錄Java的編譯過程一個例子第一步第二步Java的編譯過程

Java程序從源文件創建到程序運行要經過兩大步驟

淺談Java文件被執行的歷程

1、源文件由編譯器編譯成字節碼(ByteCode)

2、字節碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言('semi-interpreted' language)。

一個例子

下面我們通過一個簡單的 OneTest.java,來看一下一個java文件從編譯到運行的歷程。

Public class OneTest{ public static void main(String[] args){ Person one = new Person(); one.say(); }}

Public class Person{ private String name; public void say(){ System.out.println('I `m a Person'); }}

這里是兩個java文件,分別是OneTest.java,Person.java

第一步

首先是編譯階段,由JVM編譯器,將OneTest.java文件進行編譯,得到字節碼文件(OneTest.class),這里我們發現,OneTest.java中依賴了Person對象,也就是需要Person.java文件,編譯器便會檢索Persion.java是否被編譯(是否存在Person.class),若不存在,則先編譯Person.java,java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器會自動的先編譯這個所依賴的類,然后引用。

1、如果java編譯器在指定的目錄下找不到該類所依賴的類的 .class文件或者 .java源文件,就會報“Cant found sysbol”的異常錯誤。

2、編譯后的字節碼文件格式主要分為兩部分:常量池和方法字節碼。常量池記錄的是代碼出現過的常量、類名、成員變量(Person.java中的類Person名、name成員變量)等以及符號引用(類引用、方法引用(OneTest.java中的person.say),成員變量引用等);方法字節碼中放的是各個方法的字節碼。

第二步

然后進行解釋運行階段,這里運行階段分為兩步:類的加載和類的執行

JVM主要在程序第一次主動使用類的時候,才會去加載該類。也就是說,JVM并不是在一開始就把一個程序就所有的類都加載到內存中,而是到不得不用的時候才把它加載進來,而且只加載一次。

1、OneTest類的加載:在類路徑下找到編譯好的 java 程序中;得到 OneTest.class 字節碼文件后,系統就會啟動一個 JVM 進程,JVM進程從classpath路徑下找到一個名為OneTest.class的二進制文件,將OneTest.class文件中的類信息加載到運行時數據區的方法區中,這一過程叫做類的加載。(只有類信息在方法區中,才能創建對象,使用類中的成員變量)關于類的加載器

淺談Java文件被執行的歷程

2、運行OneTest.java中的main方法:main函數的第一條命令是Persion person = new Person();就是讓JVM創建一個Person對象,但是這時候方法區中沒有Person類的信息,所以JVM馬上加載Person類,把Person類的類型信息放到方法區中。

3、加載完Person類之后,Java虛擬機做的第一件事情就是在堆區中為一個新的Person實例分配內存, 然后調用構造函數初始化Person實例,這個Person實例持有著指向方法區的Person類的類型信息(其中包含有方法表,java動態綁定的底層實現)的引用

4、當使用person.say()的時候,JVM根據person引用找到Person對象,然后根據Person對象持有的引用定位到方法區中Person類的類型信息的方法表,獲得say()函數的字節碼的地址。

5、執行say方法。

以上就是淺談Java文件被執行的歷程的詳細內容,更多關于Java文件被執行的歷程的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲午夜影视 | 美女福利视频国产片 | 久久久久免费精品国产 | 国产成人不卡亚洲精品91 | 精品国产欧美精品v | 国产精品青草久久福利不卡 | 精品国产品欧美日产在线 | 久久久久久91香蕉国产 | 最新亚洲人成网站在线影院 | 日韩欧美综合在线二区三区 | 一本色道久久综合亚洲精品 | 国产麻豆一级在线观看 | 欧美黄a| 国产三级中文字幕 | 中文字幕在线观看一区二区 | 香港三级日本三级人妇三级四 | 亚洲国产三级 | 一级做a爱久久久久久久 | 国产亚洲欧美一区二区 | 久久香蕉国产线看观看精品yw | 亚洲激情视频网 | 国产三级a三级三级午夜 | 91无毒不卡 | 亚洲精品国产第一区二区三区 | 精品精品国产欧美在线观看 | 韩国黄色一级毛片 | 国内精品免费一区二区观看 | 国产精品毛片在线大全 | 亚洲在线视频免费观看 | 永久毛片 | 97久久国语露脸精品对白 | 中国做爰国产精品视频 | 久草小视频 | 亚洲综合a | 国产高清在线精品免费 | 91伊人影院 | 国产一区二区免费在线观看 | 一本大道香蕉久在线不卡视频 | 欧美成人老熟妇暴潮毛片 | 怡红院美国十次成人影院 | www.久久综合 |