jvm 體系概述


JVM 大概體系

 

JVM大概體系(從csdn上找的一幅圖)

 

 

                    

 

從上圖可以看出,JVM由四大塊組成:ClassLoader類加載器,jvm內存區,執行引擎,本地方法棧

 

1、ClassLoader:類加載器,主要負責查找,加載,解析 .class文件到jvm內存區,以供jvm執行引擎執行加載的字節碼。

 

2、jvm內存區:主要包括堆,方法區,本地線程棧,native方法棧,PC (程序計數器)JVM中所有內存相關問題都集中在這塊

 

  • 方法區:主要是存儲classLoader加載的類的信息,方法的信息,常量池中的信息

 

  • 堆: 堆裏面存的都是通過new 關鍵字修飾的對象內存信息,比如new ObjectAObjectA運行的內存就在堆中
  •  虛擬機棧:java中都是以線程方式執行代碼,線程在執行代碼的時,也需要一部分內存,這部分內存只有執行的線程所擁有。虛擬機棧裏主要是存儲java方法棧裏的信息,比如方法裏的局部變量表,操作數棧,方法出口等信息。
  •  Native方法棧:jvm中有java編寫的方法,也有底層native方法,native方法棧就是native方法執行時的內存信息。
  • PC (程序計數器):記錄當前線程執行 虛擬機字節碼指令的地址,爲給個線程所私有。虛擬機在執行字節碼時,通過改變PC的值來選擇下一條需要執行的字節碼指令。
  •  直接內存:直接內存不受JVM管理,使用native函數庫直接分配內存,然後通過DirectByteBuffer對象作爲這塊內存的引用進行操作。

                         

3、jvm執行引擎:  .class文件被ClassLoader加載到內存中,變成了JVM可解釋的代碼,這些代碼需要執行才能完成各種業務,這個時候執行這些代碼的模塊就是jvm執行引擎了。主要是把可解釋的代碼,解釋爲操作系統機器碼。

 

 

4、natevie interface: 本地接口,主要是不同語言實現的方法,提供給java調用。原本多用於一些專業領域,比如JAVA驅動,地圖製作引擎,現在關於本地方法的調用,已經被類似的Socket通信,WebService調用等方式取代了。

參考資料:

http://blog.csdn.net/mshootingstar/article/details/44783227

《深入理解java 虛擬機》

      http://docs.oracle.com/javase/specs/

  • b134f219-6af5-3d66-b599-cd53e63c7ab1-thumb.jpg
  • 大小: 34.7 KB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章