劃分對象兩種方式:
指針碰撞:java內(nèi)存空間規(guī)整的請款下使用
空閑列表:java內(nèi)存空間不規(guī)整的請款下使用
并發(fā)安全問題:頻繁創(chuàng)建對象就會存在線程不安全問題。解決方案有兩種:
1.對分配內(nèi)存空間的操作進(jìn)行同步處理,CAS加失敗重試機(jī)制保證保證更新操作原子性。
2.分配緩沖:給每個(gè)線程分配獨(dú)立空間(Java堆中申請一小塊私有內(nèi)存),也就是本地線程分配緩沖(Tread Local Allocation Buffer,TLAB),開啟 -XX:+UseTLAB,在自己Buffer分配,空間不夠重新在Eden區(qū)申請一塊繼續(xù)使用。
TLAB可以讓每個(gè)應(yīng)用線程擁有專屬的分配指針來分配空間(Eden區(qū),默認(rèn)Eden的1%),減小同步開銷。
TLAB只是讓每個(gè)線程有私有的分配指針,但底下存對象的內(nèi)存空間還是給所有線程訪問的,只是其他線程無法在這個(gè)區(qū)域分配而已。當(dāng)一個(gè)TLAB用滿(分配指針top撞上分配極限end了),重新申請一個(gè)TLAB.
在HotSpot虛擬機(jī)中,對象的內(nèi)存布局分為:對象頭(Header)、實(shí)例數(shù)據(jù)(Instance Data)和對齊填充(Padding)
對象頭分配兩部分,一是自身運(yùn)行時(shí)數(shù)據(jù)(哈希嗎HashCode)、GC分帶年齡、鎖狀態(tài)標(biāo)志、線程持有鎖、偏向線程ID、偏向時(shí)間戳等。
另一種類型指針,即只想它的類元素指針,虛擬機(jī)通過這個(gè)指針來確定是哪個(gè)類的實(shí)例
對齊填充起到占位符的作用。對象的大小必須是8個(gè)字節(jié)。實(shí)例數(shù)據(jù)7個(gè)字節(jié) 填充1個(gè),1個(gè)填充7個(gè)。
句柄:Java堆中劃分一塊內(nèi)存作為句柄池,reference中存對象句柄地址,句柄中包含對象實(shí)例數(shù)據(jù)與類型數(shù)據(jù)各自的具體地址信息。
直接指針:reference直接存對象地址。
句柄的好處對象移動(dòng)(垃圾回收移動(dòng)對象)時(shí)只改變實(shí)例數(shù)據(jù)指針,而reference本身不需要修改。直接指針方式大好處就是速度更快,減少指針定誒的時(shí)間開銷。對Sun HotSpot而言,它是使用直接指針訪問進(jìn)行對象訪問的。
-XX:SurvivorRatio=8,表示Eden和Survivor的比值,缺省為8 表示Eden:From(Survivor):To(Survivor)=8:1:1
-XX:SurvivorRatio=2表示2:1:1
設(shè)置兩個(gè)Survivor區(qū)是為了解決碎片化的問題(復(fù)制回收算法)
長期存活情況:
Eden區(qū)8m占滿,再分配1m對象,Eden區(qū)會發(fā)生MinGC.
存活對象進(jìn)入from區(qū),年齡+1,再來垃圾回收則進(jìn)入to區(qū),年齡再+1。
再次進(jìn)行垃圾回收,對象返回from區(qū),年齡再+1, from和to區(qū)反復(fù),因?yàn)閒rom和to區(qū)采用復(fù)制回收算法的原因。
年齡達(dá)到15歲,屬于長期存活對象,進(jìn)入老年代。
動(dòng)態(tài)對象年齡判斷:
from和to區(qū)年齡加起來是from年齡的一半,就可以提前晉級,進(jìn)入老年代。
空間分配擔(dān)保:HandlePromotionFailure, 不用考慮老年代空間不夠,不用考慮發(fā)生FullGC,如果擔(dān)保失敗或內(nèi)存不夠也會進(jìn)行一次FullGC
FullGC:當(dāng)老年代空間不足時(shí)候,有from或to區(qū)升級進(jìn)入老年代的時(shí)候,將會執(zhí)行FullGC
泛型擦除(為了實(shí)現(xiàn))
弱記憶(版本的兼容)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:java中的對象介紹-創(chuàng)新互聯(lián)
當(dāng)前URL:http://aaarwkj.com/article20/ppico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、微信小程序、網(wǎng)站導(dǎo)航、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容