java 虛擬機器的生命週期
一個執行時的Java虛擬機器例項的天職是:負責執行一個java程式。當啟動一個Java程式時,一個虛擬機器例項也就誕生了。當該程式關閉退出,這個虛擬機器例項也就隨之消亡。如果同一臺計算機上同時執行三個Java程式,將得到三個Java虛擬機器例項。每個Java程式都執行於它自己的Java虛擬機器例項中。
Java虛擬機器例項通過呼叫某個初始類的main()方法來執行一個Java程式。而這個main()方法必須是共有的(public)、靜態的(static)、返回值為void,並且接受一個字串陣列作為引數。任何擁有這樣一個main()方法的類都可以作為Java程式執行的起點。
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World");
}
}
在上面的例子中,Java程式初始類中的main()方法,將作為該程式初始執行緒的起點,任何其他的執行緒都是由這個初始執行緒啟動的。
在Java虛擬機器內部有兩種執行緒:守護執行緒和非守護執行緒。守護執行緒通常是由虛擬機器自己使用的,比如執行垃圾收集任務的執行緒。但是,Java程式也可以把它建立的任何執行緒標記為守護執行緒。而Java程式中的初始執行緒——就是開始於main()的那個,是非守護執行緒。
只要還有任何非守護執行緒在執行,那麼這個Java程式也在繼續執行。當該程式中所有的非守護執行緒都終止時,虛擬機器例項將自動退出。假若安全管理器允許,程式本身也能夠通過呼叫Runtime類或者System類的exit()方法來退出。
轉載自:JAVA虛擬機器的生命週期
參考:一個java虛擬機器只能支援一個程式嗎?看到網上說用processbuilder啟動子程式的話會生成一個新的java虛擬機器來執行這個程式,這樣貌似很浪費資源,有沒有可能在同一個java虛擬機器上執行多個程式呢?
相關文章
- Java虛擬機器(三)垃圾標記演算法與Java物件的生命週期Java虛擬機演算法物件
- 虛擬機器類載入機制_類載入時機和類的生命週期虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- Java 物件的生命週期Java物件
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- java servlet 生命週期JavaServlet
- Java 中物件的生命週期Java物件
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器(JVM)Java虛擬機JVM
- java~graalVM虛擬機器JavaLVM虛擬機
- Java執行緒的生命週期Java執行緒
- [Java基礎]物件的生命週期Java物件
- Java類的生命週期淺析Java
- Java虛擬機器16:MetaspaceJava虛擬機
- 備戰- Java虛擬機器Java虛擬機
- View生命週期與Activity生命週期的關係View
- Java之執行緒的生命週期Java執行緒
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- 生命週期
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- viewController的生命週期ViewController
- Servlet的生命週期Servlet
- UIViewController的生命週期UIViewController
- Flutter 的生命週期Flutter
- Spring的生命週期Spring
- bean的生命週期Bean
- SQL的生命週期SQL
- Laravel的生命週期Laravel
- 類的生命週期
- java虛擬機器指令常量部分Java虛擬機
- 深入理解java虛擬機器Java虛擬機
- Java 虛擬機器診斷利器Java虛擬機
- Java虛擬機器是什麼?Java虛擬機
- 虛擬機器系列 | JVM特點,基礎結構與執行週期虛擬機JVM
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- iOS 檢視控制器的生命週期iOS
- Java虛擬機器04——垃圾收集器Java虛擬機