?
? ???????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
??????? 我就是要????????????
??????? 白嫖??????????????
?????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????
隨著java7的正式發布,java虛擬機的設計者們通過JSR-292規范基本實作在java虛擬機平臺上運行非java語言撰寫的程式,java是跨平臺的語言,jvm是跨語言的平臺,java虛擬機根本不關心運行在其內部的程式到底是使用何種編程語言撰寫的,它只關心“位元組碼”檔案,位元組碼檔案也可以看作jvm位元組碼,凡是滿足jvm相關規范的位元組碼檔案,均可以在jvm上運行,位元組碼的檔案開頭必須為CA FE BA BE!jvm是運行在作業系統之上,與硬體并沒有直接互動,
特點
1)一次編譯,到處運行
2)自動記憶體管理
3)自動垃圾回收功能
jvm架構模型
java編譯器輸入的指令流基本上是一種基于堆疊的指令集架構,另外一種基于暫存器的指令集架構,由于跨平臺的設計,不同的CPU架構不同,即沒辦法規定相應的暫存器,所以java 的指令都是根據堆疊來設計的,相比基于暫存器,所需要設計的代碼更多,
JVM的生命周期
啟動:java虛擬機的啟動是通過引導加載器創建一個初始類(initial class)來完成的,這個類是由虛擬機的具體實作指定的,
執行:程式開始的時候執行,程式結束就停止,執行一個所謂的java程式的時候,真真正正執行的是一個叫做java虛擬機的行程,
退出:
1)程式正常執行結束
2)程式在執行程序中遇到了例外或錯誤而例外終止
3)由于作業系統出現錯誤而導致java虛擬機行程終止
4)某執行緒呼叫runtime類胡總和system的exit方法,或者runtime的halt方法,并且java安全管理器也允許這次exit和halt操作,
5)除此之外,JNI(java native interface)規范描述了用JNI Invocation API 來加載或卸載Java虛擬機時,java虛擬機的退出情況,
主要虛擬機了解
第一款虛擬機:Sun Classic VM在1996年java1.0版本的時候發布,內部只提供解釋器,如果使用JIT編輯器,就需要進行外掛,但是二者并不能配合作業,現在hotpost內置了此虛擬機,
三大虛擬機:
1)SUN公司的Hotpost VM,占據據對的市場地位,從JDK1.3開始,HotSpot成為默認虛擬機,
2)BEA的JRockit,專注于服務器端應用,因此JRockit內部不包含決議器實作,全部代碼都靠編輯器編譯后執行,號稱世界上最快的JVM,
3)IBM的J9,也號稱世界上最快的虛擬機,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290540.html
標籤:其他
