JVM主要組成部分及其作用

1.類加載器(Class Loader):加載類文件到內存。Class loader只管加載,只要符合文件結構就加載,至於能否運行,它不負責,那是有Exectution Engine 負責的。

2.執行引擎(Execution Engine):也叫解釋器,負責解釋命令,交由操作系統執行。

3.本地庫接口(Native Interface本地接口的作用是融合不同的語言爲java所用

4.運行時數據區(Runtime Data Area
                                             1833901-20191216100306250-2074172517.png

        (1)堆(線程共享)。堆是java對象的存儲區域,任何用new字段分配的java對象實例和數組,都被分配在堆上,java堆可用-Xms和-Xmx進行內存控制,jdk1.7以後,運行時常量池從方法區移到了堆上。
                                                  1833901-20191216100406918-1777989244.png 新生代:老年代=1:Eden:s1: s2=8:1:1

        (2)方法區(線程共享):用於存儲已被虛擬機加載的類信息,常量,靜態變量,即時編譯器編譯後的代碼等數據。

        (3)虛擬機棧(線程私有)虛擬機棧中執行每個方法的時候,都會創建一個棧楨用於存儲局部變量表,操作數棧,動態鏈接,方法出口等信息。

        (4)本地方法棧(線程私有)與虛擬機發揮的作用相似,相比於虛擬機棧爲Java方法服務,本地方法棧爲虛擬機使用的Native方法服務,執行每個本地方法的時候,都會創建一個棧幀用於存儲局部變量表,操作數棧,動態鏈接,方法出口等信息。

        (5)程序計數器(線程私有)指示Java虛擬機下一條需要執行的字節碼指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章