快速認識Java虛擬機參數 存儲程序的類文件
Java虛擬機也是一個可運行的程序,它或者全部用軟件方式來實現,或者采用硬件或軟件結合的方式來實現。當啟動一個Java程序時,就會運行一個Java虛擬機,每個Java程序都會對應一個Java虛擬機,運行中的Java虛擬機,也可以稱為Java虛擬機的一個實例。Java程序運行結束關閉后,運行這個程序的Java虛擬機也會關閉。例如,如果在電腦運行了三個Java程序,就會有三個Java虛擬機在運行。
java程序與虛擬機實例關系圖
每個Java程序的主類都會有一個main()方法,虛擬機啟動Java程序時,它會調用主類的main()方法作為Java程序的入口,這個main()方法的訪問權限必須是public,并且是無返回值的靜態(tài)方法,方法的參數是一個String類型的數組。
下面是HelloWorld程序代碼:
HelloWorld程序只有一個HelloWorld類,HelloWorld類內部必須有一個main()方法,當HelloWorld程序運行時,虛擬機會調用HelloWorld類的main()方法作為HelloWorld程序的入口。
在Windows命令行窗口運行HelloWorld程序的命令如下:
java HelloWorld
其中“java”就是虛擬機程序名稱,Windows會啟動一個虛擬機實例,“java”后面的“HelloWorld”是包含main()方法已編譯的class文件名稱,虛擬機啟動后,會加載HelloWorld.class文件到內存,并調用HelloWorld.class文件內的main()方法,HelloWorld程序進入運行狀態(tài),main()方法內部的語句會得到執(zhí)行,當main()方法內部的所有語句都執(zhí)行完成后,main方法返回,HelloWorld程序結束,運行這個HelloWorld程序的虛擬機實例也會退出。
虛擬機的體系結構
虛擬機由類加載器、運行數據區(qū)、執(zhí)行引擎、本地方法接口、本地方法庫組成。虛擬機體系結構如下圖所示:
當虛擬機運行一個程序時,它會使用類加載器加載Java程序的類文件,并且在計算機內申請一塊內存區(qū)域,作為運行數據區(qū)。用來存儲程序的類文件、創(chuàng)建的靜態(tài)對象和實例對象、方法、局部變量、中間結果、方法的返回值等內容。為了管理和有效地利用已申請的內存區(qū)域,虛擬機把內存劃分為堆、棧、方法區(qū)、程序計數器、本地方法棧。
運行數據區(qū)的方法區(qū)存儲了包含程序使用import語句導入的JDK類庫在內的類信息、各種常量、靜態(tài)變量、代碼編譯后的字節(jié)碼等內容;本地方法棧用來存儲調用非java代碼編寫的方法(Native Method)使用到的數據,這些方法包括用其它語言編寫的第三方庫和操作系統(tǒng)自身提供的API;堆用來存儲程序中動態(tài)創(chuàng)建的類實例對象;棧用來存儲程序調用方法過程中,使用到的參數、局部變量、中間結果、返回值等內容;程序計數器用來存儲當前程序執(zhí)行的指令(指令可以理解為類中的可執(zhí)行代碼)。
執(zhí)行引擎負責執(zhí)行方法區(qū)中的字節(jié)碼,在執(zhí)行字節(jié)碼的過程中會在堆中創(chuàng)建實例對象,在棧中存取當前方法調用的參數、局部變量、中間結果、返回值等,也會通過本地方法接口調用第三方庫方法和操作系統(tǒng)自身提供的API。
責任編輯:hnmd004
- 天天消息!tp-link路由器怎么樣?tp-link路2023-06-14
- 大盤股和板塊股的區(qū)別是什么?大盤股上市對2023-06-14
- 怎么買一個合適的外接閃光燈?使用外接式閃2023-06-14
- 計算機啟動修復要多久?啟動修復可以強制2023-06-14
- 每日消息!電腦顯卡風扇轉速怎么調?怎么在B2023-06-14
- 纖體咖啡有副作用嗎?咖啡喝多了對身體有什2023-06-14
- 基金清盤是不是賠慘了?基金一直跌會被清盤2023-06-14
- 美股的錢怎么轉回國內?為什么中國人不能買2023-06-14
- 購買空氣炸鍋需要注意哪些問題?如何清潔空2023-06-14
- 中國農業(yè)大學是211還是985?農業(yè)大學是冷門2023-06-14
- 焦點滾動:澳大利亞主帥:世界杯前43分鐘成2023-06-14
- 雞蛋怎么孵化成小雞?人工孵雞蛋最簡單的方2023-06-14
- 6月13日四川發(fā)布山洪災害藍色預警2023-06-14
- 五月天是什么時候出道的?五月天哪首歌曲最2023-06-14
- 天天熱點評!電競顯示器怎么選?哪個電競顯2023-06-14
- 股票為什么會產生異常波動?尾盤拉升第二天2023-06-14
- 勞動法年假規(guī)定怎么休?勞動法年假補償標準2023-06-14
- win10怎么取消開機密碼?win10密碼過期進不2023-06-14
- 如何升級客戶端版本?手機客戶端怎么打開?2023-06-14
- 世界快看點丨WIN10右下角天氣怎么關?win102023-06-14
- 喝咖啡不能提神怎么回事?喝咖啡一次喝多少2023-06-14
- 清倉和半倉有什么區(qū)別?北交所中簽100股能賺2023-06-14
- 申購新股最多可以配多少個號?新股申購配號2023-06-14
- 環(huán)球視訊!提前還車貸會影響征信嗎?車貸提2023-06-14
- 內馬爾和姆巴佩誰才是球隊老大?內馬爾和梅2023-06-14
- 房貸轉貸有什么風險?按揭房轉貸貸款可靠嗎2023-06-14
- 雅迪冠能探索E10電動車亮相 售價從4990元2023-06-14
- 漲浮不定與漲幅不定的區(qū)別是什么?漲幅和漲2023-06-14
- 保溫杯有涂層的目的是什么?保溫杯什么材質2023-06-14
- 蘋果手機可以更新系統(tǒng)嗎?蘋果手機發(fā)熱發(fā)燙2023-06-14
精彩推薦
閱讀排行
-
搶抓成渝地區(qū)雙城經濟圈建設機遇 建設現代產業(yè)集聚區(qū)
下一篇2020-12-09 11:32:08
-
春雨醫(yī)生APP“違規(guī)收集個人信息” 消費者質疑“醫(yī)生信息造假”
上一篇2020-12-09 09:48:02