Java 虛擬機基本結構

java虛擬機的基本結構如圖所示:

這裏寫圖片描述

基本的結構有8個


類加載子系統: 主要負責負責加載Class信息,加載的類信息都存放在方法區的類存空間中。 當JVM使用類加載器裝載某個類時,它首先要定位對應的class文件,然後讀入這個class文件,最後,JVM提取該文件的內容信息,並將這些信息存儲到方法區,最後返回一個class實例


方法區:方法區主要存儲的是方法,靜態成員,常量。方法區中給每個類都規定了空間並且持有this和super的引用。當運行到哪個對象的時候,通過this動態指向該對象,引用該對象的成員變量,然後和方法以及局部變量一起在棧中進行運算。 
方法區的大小不必是固定的,默認最小值爲16MB,最大值爲64MB,JVM可根據應用需要動態調整。同時,方法區也不一定是連續的,方法區可以在一個堆(甚至是JVM自己的堆)中自由分配。 


java堆: java堆實在jvm啓動的時候就建立的,這塊內存區域 存放了對象實例及數組(所有new的對象)也就是 Object object = new Object(); 這裏object只是一個引用是放在棧裏面的,new Object() 被放在了 堆內存裏面, 
由於現在收集器都是採用分代收集算法,堆被劃分爲新生代和老年代。新生代主要存儲新創建的對象和尚未進入老年代的對象。老年代存儲經過多次新生代GC(Minor GC)任然存活的對象。

垃圾回收系統:垃圾回收系統是jvm的重要組成部分,垃圾回收器 可以直接對 方法區 ,java堆和直接內存進行回收,在其中 java堆則是垃圾回收器的 重點工作區域,對於不在使用的垃圾對象,垃圾回收系統會在後臺,查找 標識,並且釋放這些不用的垃圾對象


java 棧:每一個線程中都有私有的java棧,一個線程的java棧 在線程被創建的時候就會被創建,java棧中保存着,局部變量,方法參數,並且對象的引用也存在棧中


本地方法棧:本地方法棧用於本地方法調用


Pc寄存器:寄存器是每個線程所有私有的空間,每個線程都會有寄存器,當線程在執行方法是,而這個方法不是本地方法,寄存器就指向當前被執行的指令


執行引擎:執行引擎則是jvm最核心的組件之一,他負責執行字節碼

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