小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

jvm的內(nèi)存區(qū)域簡介

 孤獨一兵 2016-10-20

jvm在執(zhí)行java程序過程中會將管理的內(nèi)存劃分成若干不同的數(shù)據(jù)區(qū)域,他們分別是程序計數(shù)器,堆,方法區(qū),虛擬機棧,本地方法棧。

1.1程序計數(shù)器

指令計數(shù)器是線程私有的,每個線程都有獨立的指令計數(shù)器,計數(shù)器記錄著虛擬機正在執(zhí)行的字節(jié)碼的指令地址,分支,循環(huán),跳轉(zhuǎn),異常處理和線程恢復(fù)等操作都依賴這個計數(shù)器完成,如果線程執(zhí)行的native方法,則這個計數(shù)器為空。

1.2虛擬機棧

虛擬機棧是線程私有的,主要用于存放局部變量表,操作棧,動態(tài)鏈接,方法出口等信息,由于每個方法被執(zhí)行都會創(chuàng)建對應(yīng)的線幀,方法被調(diào)用到直至完成調(diào)用的過程,實際對應(yīng)線幀在操作棧中入棧和出棧的過程。在java虛擬機規(guī)范中,對這個區(qū)域規(guī)定了兩種異常情況:如果線程請求的棧深度大于規(guī)定的深度,則拋出StackOverFlowError異常;如果虛擬機棧的動態(tài)擴展到了無法申請的足夠內(nèi)存時候?qū)伋鯫utOfMemberError異常。

1.3本地方法棧

本地方法棧和虛擬棧的功能相似,包括上述2個異常情況也一樣,區(qū)別在于虛擬機棧是為虛擬機執(zhí)行的java服務(wù),而本地方法棧是為虛擬機使用的Native方法服務(wù)。

1.4堆

堆是內(nèi)存中最大的區(qū)域,并且它是所有線程共享的區(qū)域。它的唯一作用就是存放對象實例,根據(jù)jvm規(guī)范的規(guī)范,它的內(nèi)存空間可以使不連續(xù)的,只要在邏輯上連續(xù)的即可。

1.5 方法區(qū)

方法區(qū)和堆一樣,是被所有線程共享的運行時區(qū)域,它用于存放被虛擬機加載的累信息,常量,靜態(tài)變量,即時編譯后的代碼等數(shù)據(jù),跟堆的情況一樣,當(dāng)方法區(qū)無法滿足內(nèi)存分配需求時,也會拋出OutOfMemberError的異常。

運行時常量池也屬于方法區(qū)的一部分。class文件除了有版本,字段,方法,接口等描述信息外,其中還有信息是常量池,用于存放編譯后的各種字面量和符號引用,這部分將在類加載后存放到方法區(qū)的常量池中。另外java語言并非要求常量一定一定在編譯期間產(chǎn)生,即是并非預(yù)置入的class文件常量池的內(nèi)存才能進入方法區(qū)的運行時常量池,運行期間同樣也能進入。

1.6直接內(nèi)存

直接內(nèi)存并不屬于虛擬機運行時的數(shù)據(jù)區(qū)的一部分, 也不是java虛擬機規(guī)范中定義的內(nèi)存區(qū)域,但這部分內(nèi)存被頻繁使用到,并且也會爆outofmemoryError異常。

在java jdk1.4中加入了NIO類,引入了基于通道(Channel)與緩沖區(qū)(Buffer)的I/O方式,它可以直接使用Native函數(shù)分配堆外的內(nèi)存,然后通過存儲在java堆中DirectByteBuffer對象作為這塊內(nèi)存的引用直接操作,這樣避免了java堆和Native堆來回復(fù)制的問題,提升了行性能。

2 對象訪問

java虛擬機規(guī)定了一個對象變量指向一個對象的引用,并沒有定義這個引用以何種方式去定位,以及訪問到j(luò)ava堆的具體位置,所以不同的虛擬機實現(xiàn)對象訪問的方式略有不同,大概主流的分為:句柄和直接指針。

使用句柄訪問方式,java堆會劃出一個內(nèi)存區(qū)域作為句柄池,對象的變量存儲的就是句柄池的地址,而句柄池中就存放了對象實例的數(shù)據(jù)以及對象類型信息的地址信息。若使用直接訪問方式,對象變量中存儲的直接是對象實例的數(shù)據(jù)以及對象類型信息的地址信息。

兩種訪問方式各有優(yōu)勢,句柄訪問的優(yōu)勢在于對象變量可存儲穩(wěn)定的地址,當(dāng)對象移動時,只需改變句柄池的地址,變量本身無需修改。直接訪問的優(yōu)勢明顯在于訪問速度快,sun HotSpot就是采用第二種對象訪問方式。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多