Java 虛擬機(JVM)之基本概念詳解
1、類加載子系統(tǒng):負(fù)責(zé)從文件系統(tǒng)或者網(wǎng)絡(luò)中加載Class信息,加載的信息存放在一塊稱之為方法區(qū)的內(nèi)存空間。
2、方法區(qū):就是存放類信息、常量信息、常量池信息、包括字符串字面量和數(shù)字常量等。方法區(qū)是輔助堆棧的塊永久區(qū),解決堆棧信息的產(chǎn)生,是先決條件。
3、Java堆:再java虛擬機啟動的時候建立Java堆,它是java程序最主要的內(nèi)存工作區(qū)域,幾乎所有的對象實例都存放到Java堆中,堆空間是所有線程共享的。堆解決的是數(shù)據(jù)存儲問題,即數(shù)據(jù)怎么放、放在哪兒。
4、直接內(nèi)存:Java的NIO庫允許Java程序使用直接內(nèi)存,從而提高性能,通常直接內(nèi)存速度會優(yōu)于Java堆。讀寫頻繁的場合可能會考慮使用。
5、每個虛擬機線程都有一個私有的棧,一個線程的Java棧在線程創(chuàng)建的時候被創(chuàng)建,Java棧中保存著局部變量、方法參數(shù)、同時Java的方法調(diào)用、返回值等。棧解決程序的運行問題,即程序如何執(zhí)行,或者說如何處理數(shù)據(jù)。
6、本地方法棧:和Java棧非常類似,最大不同為本地方法棧用于本地方法調(diào)用,Java虛擬機允許Java直接調(diào)用本地方法。
7、垃圾收集系統(tǒng):是Java的核心,也是必不可少的,Java有一套自己進行垃圾清理的機制,開發(fā)人員無需手工清理。
8、PC寄存器:每個線程私有的空間,Java虛擬機會為每個線程創(chuàng)建PC寄存器,在任意時刻,一個Java線程總是在執(zhí)行一個方法,這個方法被稱為當(dāng)前方法,如果當(dāng)前方法不是本地方法,PC寄存器就會執(zhí)行當(dāng)前正在被執(zhí)行的指令,如果是本地方法,則PC寄存器值為undefined,寄存器存放如當(dāng)前執(zhí)行環(huán)境指針、程序計數(shù)器、操作棧指針、計算的變量指針等信息。
9、虛擬機最核心的組件就是執(zhí)行引擎了,它負(fù)責(zé)執(zhí)行虛擬機的字節(jié)碼,一般用戶先進行編譯成機器碼后執(zhí)行。
以上這篇Java 虛擬機(JVM)之基本概念詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java序列化和反序列化_動力節(jié)點Java學(xué)院整理
把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化,把字節(jié)序列恢復(fù)為對象的過程稱為對象的反序列化。接下來通過本文給大家介紹Java序列化和反序列化及主要的兩種用途,感興趣的的友參考下吧2017-05-05
JAVA簡單鏈接Oracle數(shù)據(jù)庫 注冊和登陸功能的實現(xiàn)代碼
這篇文章主要介紹了JAVA鏈接Oracle并實現(xiàn)注冊與登錄功能的代碼實例,有需要的朋友可以參考一下2014-01-01
一個例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用
synchronized是Java里的一個關(guān)鍵字,起到的一個效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時禁止指令重排序和保證內(nèi)存的可見性,下面這篇文章主要給大家介紹了關(guān)于如何通過一個例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用的相關(guān)資料,需要的朋友可以參考下2022-10-10
聊聊SpringCloud和SpringCloudAlibaba的區(qū)別
這篇文章主要介紹了SpringCloud和SpringCloudAlibaba的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java AOP實現(xiàn)自定義滑動窗口限流器方法詳解
這篇文章主要介紹了Java AOP實現(xiàn)自定義滑動窗口限流器方法,其中滑動窗口算法彌補了計數(shù)器算法的不足,滑動窗口算法把間隔時間劃分成更小的粒度,當(dāng)更小粒度的時間間隔過去后,把過去的間隔請求數(shù)減掉,再補充一個空的時間間隔,需要的朋友可以參考下2022-07-07

