摘要:源文件使用編譯成字節(jié)碼文件,再解釋成平臺(tái)機(jī)器碼。各線程之間的計(jì)數(shù)器互不影響。這區(qū)域的內(nèi)存回收目標(biāo)主要是針對(duì)常量池的回收和對(duì)類型的卸載
Java程序運(yùn)行機(jī)制和虛擬機(jī)內(nèi)存介紹
先編譯,再解釋。Java源文件使用javac編譯成.class字節(jié)碼文件,再解釋成平臺(tái)機(jī)器碼。
Jvm自動(dòng)內(nèi)存管理 Jvm內(nèi)存區(qū)域介紹棧內(nèi)存存儲(chǔ)的是局部變量,堆內(nèi)存存儲(chǔ)的是實(shí)體,棧內(nèi)存更新快,存放的變量生命周期結(jié)束之后釋放,堆內(nèi)存存放的實(shí)體會(huì)被垃圾回收機(jī)制不定時(shí)回收。
把管理的內(nèi)存劃分成不同的數(shù)據(jù)區(qū)域,方法區(qū)、堆 <--->執(zhí)行引擎 ---->(本地庫接口)
虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)棧<--->本地庫接口 ---->本地方法庫
程序計(jì)數(shù)器:較小,當(dāng)前字節(jié)碼行號(hào)指示器,通過改變值選取下一條指令。各線程之間的計(jì)數(shù)器互不影響。
虛擬機(jī)棧:線程私有,生命周期與線程相同,每個(gè)方法執(zhí)行時(shí)創(chuàng)建一個(gè)棧幀(Stack Frame),存儲(chǔ)局部變量表等信息,局部變量表內(nèi)存空間分配在編譯期間完成
本地方法棧:與虛擬機(jī)棧類似,區(qū)別為本地方法棧為Native方法服務(wù)
Java堆:通常來說是內(nèi)存空間最大的一塊兒,被所有線程共享,唯一目的就是存放對(duì)象實(shí)例。從內(nèi)存回收角度,又被成為GC(garbage collection)堆,還可細(xì)分為新生代,老年代
方法區(qū):與Java堆一樣,線程共享,用于存儲(chǔ)已被虛擬機(jī)加載的類信息、 常量、 靜態(tài)變量、 即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。這區(qū)域的內(nèi)存回收目標(biāo)主要是針對(duì)常量池的回收和對(duì)類型的卸載
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69328.html
摘要:前言三年后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是的高級(jí)后端開發(fā)。面試結(jié)束,應(yīng)該沒有后續(xù)。 前言 三年Java后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是20k-35k的高級(jí)后端Java開發(fā)。 第一場(chǎng),基本裸面,關(guān)于曾經(jīng)的項(xiàng)目部門答的不好,所以還是得好好準(zhǔn)備。 某C輪在線旅游公司 筆試 先做半個(gè)小時(shí)的筆試題,一共六個(gè)題目,兩道go語言的基礎(chǔ)題,一道斐波那契相關(guān),一道數(shù)據(jù)庫行列轉(zhuǎn)置,一道實(shí)現(xiàn)一個(gè)棧,還有一道是百萬計(jì)...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺(tái)機(jī)器碼,通過特定平臺(tái)運(yùn)行。漲見識(shí),字節(jié)碼執(zhí)行過程分析。解決辦法減少默認(rèn)棧的容量來換取更多的線程支持。 前言 JVM是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來實(shí)現(xiàn)的抽象的計(jì)算機(jī),可以在上面執(zhí)行java的...
摘要:編譯器只需面向,生成能理解的代碼或字節(jié)碼文件。源文件經(jīng)編譯器,編譯成字節(jié)碼程序,通過將每一條指令翻譯成不同平臺(tái)機(jī)器碼,通過特定平臺(tái)運(yùn)行。漲見識(shí),字節(jié)碼執(zhí)行過程分析。解決辦法減少默認(rèn)棧的容量來換取更多的線程支持。 前言 JVM是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來實(shí)現(xiàn)的抽象的計(jì)算機(jī),可以在上面執(zhí)行java的...
閱讀 2253·2021-11-18 10:02
閱讀 3501·2021-11-15 11:36
閱讀 1125·2019-08-30 14:03
閱讀 747·2019-08-30 11:08
閱讀 2776·2019-08-29 13:20
閱讀 3300·2019-08-29 12:34
閱讀 1386·2019-08-28 18:30
閱讀 1652·2019-08-26 13:34