對於Java學習者來說,JVM不會陌生,從一開始用Java編寫的Hello World開始,JVM就與我們時時刻刻相關聯。
什麼是JVM?Java Virtual Machine指的是Java程序的運行環境,用Java編寫的源代碼,經過Javac編譯成Class字節碼文件,然後經過程序加載到JVM中即可運行,確切的說是Java二進制字節碼的運行環境。
JVM是Java一次編寫到處運行的基礎,Java語言是跨平臺的,正是JVM屏蔽了字節碼和底層操作系統之間的差異,對外提供了一致的運行環境,JVM就可用解釋的方式來執行二進制字節碼文件來達到平臺的無關性。
JVM的內存自動管理,提供了垃圾自動回收機制,雖然垃圾回收機制在很多語言中都存在,但是Java在最開始與C、C++之間相互競爭的時候,而這兩者都沒有相應的內存回收機制,需要自己手動的去釋放內存,如果編碼不當,也很有可能造成內存的泄露。而JVM就大大的減輕了我們的負擔,減少了出錯的機率。
當然JVM也還有其他的優點,比如數組下標越界檢查,你可能會說Java對於這種的檢查不就是數組下標越界拋出異常,可是拋異常和數組的新元素覆蓋了程序的其他部分相比較,後者更爲嚴重,C就沒有數組下標越界的檢查,程序員必須自己去檢查數組是否越界,如果一不小心越界,可能會覆蓋其他代碼的內存。還有多態,多態是面向對象的基石,正是有了多態纔可以讓程序可擴展。
JVM經常與JRE,JDK相互混淆,下面就是幾個之間的區分。
JVM可以幫我們理解底層的實現原理,才能理解自動拆裝箱是怎麼實現的?動態代理是怎麼一回事?