内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Java對(duì)象的內(nèi)存布局及訪問定位是什么

今天就跟大家聊聊有關(guān)Java對(duì)象的內(nèi)存布局及訪問定位是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司是專業(yè)的鄱陽網(wǎng)站建設(shè)公司,鄱陽接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鄱陽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

在HotSpot虛擬機(jī)中,對(duì)象在內(nèi)存中的布局分為三塊區(qū)域:對(duì)象頭(Header)、實(shí)例數(shù)據(jù)(InstanceData)、對(duì)齊填充(Padding)。

對(duì)象的內(nèi)存布局

對(duì)象頭包括兩部分信息,第一部分用于存儲(chǔ)對(duì)象自身的運(yùn)行時(shí)數(shù)據(jù),如哈希碼、GC分代年齡、鎖狀態(tài)標(biāo)志、線程持有的鎖、偏向線程ID、偏向時(shí)間戳等,官方稱這部分?jǐn)?shù)據(jù)為MarkWord。另外一部分是類型指針,即對(duì)象指向它的類元數(shù)據(jù)的指針,虛擬機(jī)通過這個(gè)指針確定對(duì)象是哪個(gè)類的實(shí)例。但不是所有的虛擬機(jī)實(shí)現(xiàn)都會(huì)在對(duì)象數(shù)據(jù)上保留類型指針,也就是說查找對(duì)象的元數(shù)據(jù)信息不一定要經(jīng)過對(duì)象本身,這點(diǎn)會(huì)在下面對(duì)象定位方式中講到。另外如果對(duì)象是一個(gè)Java數(shù)組,對(duì)象頭中還會(huì)記錄數(shù)組長(zhǎng)度,用來確定Java對(duì)象的大小。

HotSpot虛擬機(jī)對(duì)象頭MarkWord

對(duì)象的真正有效數(shù)據(jù),也就是代碼中定義的字段內(nèi)容。這部分存儲(chǔ)數(shù)據(jù)受到虛擬機(jī)分配策略參數(shù)和字段在Java源碼中定義順序的影響。HotSpot虛擬機(jī)默認(rèn)分配策略為longs/doubles、ints、shorts/chars、bytes/booleans、oops。相同寬度的字段總是被分配到一起。在這個(gè)前提下,父類中定義的變量會(huì)出現(xiàn)在子類之前。如果CompactFields參數(shù)為true,那么子類中較窄的變量也可能插到父類變量的空隙中。

對(duì)齊填充并不是必然存在的,也沒有特殊含義,它僅僅是占位符。由于HotSpotVM的自動(dòng)內(nèi)存管理系統(tǒng)要求對(duì)象起始地址必須是8字節(jié)的整數(shù)倍,也就是對(duì)象大小必須是8字節(jié)的整數(shù)倍。因此當(dāng)對(duì)象實(shí)例數(shù)據(jù)沒有對(duì)齊時(shí),就會(huì)通過對(duì)齊填充來補(bǔ)全。

對(duì)象的訪問定位

建立對(duì)象是為了使用對(duì)象,Java程序需要通過Java棧上的reference數(shù)據(jù)來操作Java堆上的對(duì)象。reference類型就是一個(gè)指向?qū)ο蟮囊?。?duì)象的訪問方式取決于虛擬機(jī)實(shí)現(xiàn),目前的訪問方式主要有使用句柄和直接指針兩種。

如果使用句柄訪問,Java堆中將會(huì)劃分出一塊內(nèi)存作為句柄池,reference中存儲(chǔ)的就是對(duì)象的句柄地址,而句柄中包含了對(duì)象的實(shí)例數(shù)據(jù)與類型數(shù)據(jù)的地址

如果使用直接指針訪問,reference中存儲(chǔ)的直接就是對(duì)象地址,但是對(duì)象中還會(huì)放置訪問類型數(shù)據(jù)的指針。

這兩種對(duì)象訪問方式各有優(yōu)劣,使用句柄訪問的話,reference中存儲(chǔ)的是穩(wěn)定的句柄地址,垃圾收集時(shí)移動(dòng)對(duì)象的話,只會(huì)修改句柄中的實(shí)例數(shù)據(jù)指針,而reference本身不需要修改。

使用直接指針訪問的最大好處就是速度更快,節(jié)省了一次指針定位的時(shí)間,對(duì)象訪問非常頻繁,這種節(jié)省極少成多的話也是非??捎^。

HotSpot虛擬機(jī)使用的是直接指針訪問的方式。

看完上述內(nèi)容,你們對(duì)Java對(duì)象的內(nèi)存布局及訪問定位是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

文章題目:Java對(duì)象的內(nèi)存布局及訪問定位是什么
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article26/ihgjjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)網(wǎng)站排名、品牌網(wǎng)站建設(shè)、網(wǎng)站制作、ChatGPT、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
达日县| 剑阁县| 榕江县| 深水埗区| 武鸣县| 枣阳市| 朝阳县| 尚志市| 安阳县| 新和县| 饶平县| 东港市| 石棉县| 杂多县| 柏乡县| 湾仔区| 盈江县| 龙口市| 凤凰县| 得荣县| 遵化市| 郎溪县| 定结县| 中江县| 浦城县| 伊金霍洛旗| 含山县| 柯坪县| 宿迁市| 阳东县| 锡林郭勒盟| 阿巴嘎旗| 九龙坡区| 米林县| 台南市| 景洪市| 吐鲁番市| 宜良县| 客服| 石家庄市| 内乡县|