日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM 学习一:JVM 的构架模型及生命周期

發布時間:2025/3/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM 学习一:JVM 的构架模型及生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JVM 的架構模型

Java 編譯器輸入的指令流基本上是一種基于棧的指令集架構,另外一種指令集架構則是基于寄存器的指令集架構

具體來說,這兩種架構之間的區別:

  • 基于棧式架構的特點:
    • 設計和實現更簡單,適用于資源受限的系統
    • 避開了寄存器的分配難題:使用零地址指令方式分配
    • 指令流中的指令大部分是零地址指令,其執行過程依賴于操作棧。指令集更小,編譯器實現更容易
    • 不需要硬件支持,可移植性更好,更好實現跨平臺
  • 基于寄存器架構的特點:
    • 典型的應用是 X86 的二進制指令集:比如傳統的 PC 以及 Android 的 Davlik 虛擬機
    • 指令集架構則完全依賴硬件,可移植性差
    • 性能優秀和執行更高效
    • 花費更少的指令去完成一項操作
    • 在大部分情況下,基于寄存器架構的指令集往往都以一地址指令、二地址指令、三地址指令為主,而基于棧式架構的指令集卻是以零地址指令為主

由于跨平臺的設計,Java 的指令都是根據棧來設計的。不同平臺的 CPU 架構不同,所以不能設計為基于寄存器的。優點是跨平臺,指令集小,編譯器容易實現,缺點是性能下降,實現同樣的功能需要更多的指令。

JVM 的生命周期

虛擬機的啟動

Java 虛擬機的啟動是通過引導類加載器(bootstrap class loader)創建一個初始類(initial class)來完成的,這個類是由虛擬機的具體實現指定的。

虛擬機的執行

  • 一個運行中的 Java 虛擬機有著一個清晰的任務:執行 Java 程序
  • 程序開始執行時它才運行,程序結束的時候它就停止
  • 執行一個所謂的 Java 程序的時候,真正在執行的是一個叫做 Java 虛擬機的進程

虛擬機的退出

虛擬機的退出有如下幾種情況:

  • 程序正常執行結束
  • 程序在執行過程中遇到了異常或錯誤而異常終止
  • 由于操作系統出現錯誤而導致 Java 虛擬機進程終止
  • 某線程調用 Runtime 類或 System 類的 exit 方法,或 Runtime 類的 halt 方法,并且 Java 安全管理器也允許這次 exit 或 halt 操作
  • 除此之外,JNI(Java Native Interface)規范描述了用 JNI Invocation API 來加載或卸載 Java 虛擬機時,Java 虛擬機的退出情況

總結

以上是生活随笔為你收集整理的JVM 学习一:JVM 的构架模型及生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。