JVM虛擬機(jī)的執(zhí)行流程解析
1. 虛擬機(jī)的啟動(dòng)
Java虛擬機(jī)的啟動(dòng)是通過(guò)引導(dǎo)類加載器創(chuàng)建一個(gè)初始類來(lái)完成的,這個(gè)類是由虛擬機(jī)的具體實(shí)現(xiàn)指定的。
2.虛擬機(jī)的執(zhí)行
1.一個(gè)運(yùn)行中的Java虛擬機(jī)有著一個(gè)清晰的任務(wù):執(zhí)行Java程序。
2.程序開始執(zhí)行時(shí)他才運(yùn)行,程序結(jié)束時(shí)他就停止
3.執(zhí)行一個(gè)所謂的Java程序的時(shí)候,真真正正在執(zhí)行的是一個(gè)叫做Java虛擬機(jī)的進(jìn)程
2.1如何查看虛擬機(jī)的執(zhí)行
第一步運(yùn)行這個(gè)線程
public class StackStruTest { public static void main(String[] args) { int i =2; int j = 3; int k = i + j ; try { Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("\"hello\" = " + "hello"); } }
第二步:
Terminal選項(xiàng)欄中輸入: jps 可以查看當(dāng)前正在運(yùn)行的線程
3.虛擬機(jī)的退出
虛擬機(jī)的推出有以下的幾種情況:
1.程序正常執(zhí)行結(jié)束
2.程序在執(zhí)行過(guò)程中遇到了異常或錯(cuò)誤而異常終止
3.由于操作系統(tǒng)出現(xiàn)錯(cuò)誤而導(dǎo)致Java虛擬機(jī)進(jìn)程終止
4.某線程調(diào)用Runtime類或者System類的exit方法,或Runtime類的halt方法,并且Java安全管理器也允許這次exit或halt操作
除此之外,JNI規(guī)范描述了JNI來(lái)加載或者卸載Java虛擬機(jī)時(shí),Java虛擬機(jī)的推出情況。
源碼解析:
第一步: 先進(jìn)入System中找到exit方法,進(jìn)入Runtime.getRuntime().exit(status)中的exit方法
注意:即我們可以在system中把Runtime進(jìn)程給關(guān)閉掉
第二步: 此事已經(jīng)進(jìn)入Runtime類中,我們?cè)俅芜M(jìn)入shutdown類中的exti方法 注意的是Runtime這個(gè)類涉及到虛擬機(jī)的運(yùn)行時(shí)
第三步: 此時(shí)已近進(jìn)入Shutdown類中
到此這篇關(guān)于JVM虛擬機(jī)的執(zhí)行流程解析的文章就介紹到這了,更多相關(guān)JVM執(zhí)行流程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的 FilterInputStream簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
FilterInputStream 的作用是用來(lái)“封裝其它的輸入流,并為它們提供額外的功能”。接下來(lái)通過(guò)本文給大家分享Java中的 FilterInputStream簡(jiǎn)介,感興趣的朋友一起學(xué)習(xí)吧2017-05-05使用Mybatis-Plus實(shí)現(xiàn)對(duì)象屬性自動(dòng)填充功能
這篇文章主要介紹了如何使用Mybatis-Plus實(shí)現(xiàn)對(duì)象屬性自動(dòng)填充功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,感興趣的朋友們下面隨著小編來(lái)一起來(lái)學(xué)習(xí)吧2024-01-01簡(jiǎn)單了解JAVA內(nèi)存區(qū)域效果知識(shí)
這篇文章主要介紹了簡(jiǎn)單了解JAVA內(nèi)存區(qū)域效果知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10解決java文件流處理異常 mark/reset not supported問(wèn)題
這篇文章主要介紹了解決java文件流處理異常 mark/reset not supported問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10SpringBoot3.x嵌入MongoDB進(jìn)行測(cè)試的步驟詳解
本文介紹了在?Spring?Boot?應(yīng)用中使用Flapdoodle?Embed?Mongo進(jìn)行?MongoDB?測(cè)試的方法,包括Embed?Mongo?的概念,添加依賴、配置、運(yùn)行測(cè)試的步驟,還列舉了其優(yōu)勢(shì)如快速啟動(dòng)關(guān)閉、環(huán)境一致、無(wú)需外部依賴等,以及注意事項(xiàng)和結(jié)論,需要的朋友可以參考下2024-12-12聊聊maven的pom.xml中的exclusions標(biāo)簽的作用
這篇文章主要介紹了maven的pom.xml中的exclusions標(biāo)簽的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12