生命周期
一丽已、虛擬機的啟動
Java虛擬機的啟動是通過引導類加載器(bootstrap class loader)創(chuàng)建一個初始類(initial class)來完成的,這個類是由虛擬機的具體實現指定的亏钩。
二、虛擬機的執(zhí)行
- 一個運行中的Java虛擬機有著一個清晰的任務:執(zhí)行Java程序欺旧。
- 程序開始執(zhí)行時他才運行铸屉,程序結束時他就停止。
- 執(zhí)行一個所謂的Java程序的時候切端,真真正正在執(zhí)行的是一個叫做Java虛擬機的進程彻坛。
三、虛擬機的退出
- 程序正常執(zhí)行結束踏枣。
- 程序在執(zhí)行過程中遇到了異巢耄或錯誤而異常終止。
- 由于操作系統用現錯誤而導致Java虛擬機進程終止茵瀑。
- 某線程調用Runtime類或System類的exit()方法间驮,或Runtime類的halt()方法,并且Java安全管理器也允許這次exit()或halt()操作马昨。
- 除此之外竞帽,JNI(Java Native Interface)規(guī)范描述了用JNI Invocation API來加載或卸載 Java虛擬機時,Java虛擬機的退出情況鸿捧。
整體結構
- HotSpot VM是目前市面上高性能虛擬機的代表作之一屹篓。
- 它采用解釋器與即時編譯器并存的架構。
- 在今天匙奴,Java程序的運行性能早已脫胎換骨堆巧,已經達到了可以和C/C++程序一較高下的地步。
- 執(zhí)行引擎包含三部分:解釋器泼菌,即時編譯器谍肤,垃圾回收器。
-
JVM是運行在操作系統之上的哗伯,它與硬件沒有直接的交互
image.png
image.png