1、類載入子系統:負責從文件系統或者網路中載入Class信息,載入的信息存放在一塊稱之為方法區的記憶體空間。 2、方法區:就是存放類信息、常量信息、常量池信息、包括字元串字面量和數字常量等。方法區是輔助堆棧的塊永久區,解決堆棧信息的產生,是先決條件。 3、Java堆:再java虛擬機啟動的時候建立Ja ...
1、類載入子系統:負責從文件系統或者網路中載入Class信息,載入的信息存放在一塊稱之為方法區的記憶體空間。
2、方法區:就是存放類信息、常量信息、常量池信息、包括字元串字面量和數字常量等。方法區是輔助堆棧的塊永久區,解決堆棧信息的產生,是先決條件。
3、Java堆:再java虛擬機啟動的時候建立Java堆,它是java程式最主要的記憶體工作區域,幾乎所有的對象實例都存放到Java堆中,堆空間是所有線程共用的。堆解決的是數據存儲問題,即數據怎麼放、放在哪兒。
4、直接記憶體:Java的NIO庫允許Java程式使用直接記憶體,從而提高性能,通常直接記憶體速度會優於Java堆。讀寫頻繁的場合可能會考慮使用。
5、每個虛擬機線程都有一個私有的棧,一個線程的Java棧線上程創建的時候被創建,Java棧中保存著局部變數、方法參數、同時Java的方法調用、返回值等。棧解決程式的運行問題,即程式如何執行,或者說如何處理數據。
6、本地方法棧:和Java棧非常類似,最大不同為本地方法棧用於本地方法調用,Java虛擬機允許Java直接調用本地方法。
7、垃圾收集系統:是Java的核心,也是必不可少的,Java有一套自己進行垃圾清理的機制,開發人員無需手工清理。
8、PC寄存器:每個線程私有的空間,Java虛擬機會為每個線程創建PC寄存器,在任意時刻,一個Java線程總是在執行一個方法,這個方法被稱為當前方法,如果當前方法不是本地方法,PC寄存器就會執行當前正在被執行的指令,如果是本地方法,則PC寄存器值為undefined,寄存器存放如當前執行環境指針、程式計數器、操作棧指針、計算的變數指針等信息。
9、虛擬機最核心的組件就是執行引擎了,它負責執行虛擬機的位元組碼,一般用戶先進行編譯成機器碼後執行。