一、首先分析兩個概念
JVM實例和JVM執行引擎實例
(1)JVM實例對應了一個獨立運行的java程序——進程級別
一個運行時的Java虛擬機(JVM)負責運行一個Java程序。
當啟動一個Java程序時,一個虛擬機實例誕生;當程序關閉退出,這個虛擬機實例也就隨之消亡。
如果在同一台計算機上同時運行多個Java程序,將得到多個Java虛擬機實例,每個Java程序都運行於它自己的Java虛擬機實例中。
(2)JVM執行引擎實例則對應了屬於運行程序的線程——線程級別
二、JVM的生命周期
(1)JVM實例的誕生
當啟動一個Java程序時,一個JVM實例就產生了,任何一個擁有public static void main(String[] args)函數的class都可以作為JVM實例運行的起點
(2)JVM實例的運行
main()作為該程序初始線程的起點,任何其他線程均由該線程啟動。JVM內部有兩種線程:守護線程和非守護線程,main()屬於非守護線程,守護線程通常由JVM自己使用,java程序也可以標明自己創建的線程是守護線程。 http://www.cnblogs.com/super-d2/p/3348183.html
(3)JVM實例的消亡
當程序中的所有非守護線程都終止時,JVM才退出;若安全管理器允許,程序也可以使用java.lang.Runtime類或者java.lang.System.exit()來退出。