JVM虛擬機器基礎

某人人莫發表於2021-01-24

JVM 全稱Java Virtual Machine,也就是我們耳熟能詳的Java 虛擬機器。它能識別.class 字尾的檔案,並且能夠解析它的指令,最終呼叫作業系統上的函式,完成我們想要的操作。

Java執行流程

​ 當我們編寫完程式之後檔案就是.Java檔案通過Javac指令編譯之後就是.class檔案,之後就是由JVM將類載入到方法區中,執行引擎執行這些位元組碼。

​ 過程如下:Java 檔案->編譯器>位元組碼->JVM->機器碼

JVM的跨平臺、跨語言性

  • 跨語言

    ​ 因為JVM是通過識別位元組碼(.class檔案)的方式進行執行的,所以只要其他語言如果也可以編譯為位元組碼檔案則也可以在JVM上執行,例如:Groovy、Kotlin等等一些語言。所以JVM也是一定程度上奠定了Java強大的生態圈。

JVM相關實現

​ JVM規範的存在提供了一些JVM的具體的實現。

  • HotSpot

    使用最多的Java虛擬機器,通過javac -version的命令可以看到。

  • Jrocket

    原隸屬於BEA公司,號稱最快的JVM,後被Oracle所收購,與HotSpot所合併。

  • J9

    IBM公司的JVM,主要用於自家產品上(IBM WebSphere 和IBM 的AIX 平臺)。

  • TaobaoVM

    淘寶根據HotSpot為自身定製的JVM,目前阿里、天貓都在使用。

  • zing

    屬於zual公司,很牛,但是很貴。它的垃圾回收速度非常快,之後它的垃圾回收演算法被HotSpot所吸收形成了現在的ZGC。

JVM 整體知識模組

​ 從下圖中可以看到JVM的知識模組是比較多的,但是基本上都會與記憶體結構牽扯到一些關係,所以記憶體結構是非常重要的一塊知識點。

相關文章