成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何理解JVM中Java對象的大小與引用類型

本篇文章為大家展示了如何理解JVM中Java對象的大小與引用類型,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),鐘山企業(yè)網(wǎng)站建設(shè),鐘山品牌網(wǎng)站建設(shè),網(wǎng)站定制,鐘山網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,鐘山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

小編總結(jié)了JVM概念中的Java對象的大小,以及三種引用類型的定義與區(qū)分。

基本數(shù)據(jù)的類型的大小是固定的,這里就不多說了。對于非基本類型的Java對象,其大小就值得商榷。

在Java中,一個空Object對象的大小是8byte,這個大小只是保存堆中一個沒有任何屬性的對象的大小??聪旅嬲Z句:

Object ob = new Object();

這樣在程序中完成了一個Java對象的生命,但是它所占的空間為:4byte+8byte。4byte是上面部分所說的Java棧中保存引用的所需要的空間。而那8byte則是Java堆中對象的信息。因為所有的Java非基本類型的對象都需要默認(rèn)繼承Object對象,因此不論什么樣的Java對象,其大小都必須是大于8byte。

有了Object對象的大小,我們就可以計算其他對象的大小了。

Class NewObject {  int count;  boolean flag;  Object ob;  }

其大小為:空對象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因為Java在對對象內(nèi)存分配時都是以8的整數(shù)倍來分,因此大于17byte的最接近8的整數(shù)倍的是24,因此此對象的大小為24byte。

  • Java新手進(jìn)階:細(xì)說引用類型

  • Java對象的序列化和反序列化實踐

  • Java對象的強(qiáng)、軟、弱和虛引用

  • JDK、SDK、JRE、JVM概念詳解

  • Java對象類型轉(zhuǎn)換的四個經(jīng)驗

這里需要注意一下基本類型的包裝類型的大小。因為這種包裝類型已經(jīng)成為對象了,因此需要把他們作為對象來看待。包裝類型的大小至少是12byte(聲明一個空Object至少需要的空間),而且12byte沒有包含任何有效信息,同時,因為Java對象大小是8的整數(shù)倍,因此一個基本類型包裝類的大小至少是16byte。這個內(nèi)存占用是很恐怖的,它是使用基本類型的N倍(N>2),有些類型的內(nèi)存占用更是夸張(隨便想下就知道了)。因此,可能的話應(yīng)盡量少使用包裝類。在JDK5.0以后,因為加入了自動類型裝換,因此,Java虛擬機(jī)會在存儲方面進(jìn)行相應(yīng)的優(yōu)化。

引用類型

對象引用類型分為強(qiáng)引用、軟引用、弱引用和虛引用。

強(qiáng)引用:就是我們一般聲明對象是時虛擬機(jī)生成的引用,強(qiáng)引用環(huán)境下,垃圾回收時需要嚴(yán)格判斷當(dāng)前對象是否被強(qiáng)引用,如果被強(qiáng)引用,則不會被垃圾回收

軟引用:軟引用一般被做為緩存來使用。與強(qiáng)引用的區(qū)別是,軟引用在垃圾回收時,虛擬機(jī)會根據(jù)當(dāng)前系統(tǒng)的剩余內(nèi)存來決定是否對軟引用進(jìn)行回收。如果剩余內(nèi)存比較緊張,則虛擬機(jī)會回收軟引用所引用的空間;如果剩余內(nèi)存相對富裕,則不會進(jìn)行回收。換句話說,虛擬機(jī)在發(fā)生OutOfMemory時,肯定是沒有軟引用存在的。

弱引用:弱引用與軟引用類似,都是作為緩存來使用。但與軟引用不同,弱引用在進(jìn)行垃圾回收時,是一定會被回收掉的,因此其生命周期只存在于一個垃圾回收周期內(nèi)。

強(qiáng)引用不用說,我們系統(tǒng)一般在使用時都是用的強(qiáng)引用。而“軟引用”和“弱引用”比較少見。他們一般被作為緩存使用,而且一般是在內(nèi)存大小比較受限的情況下做為緩存。因為如果內(nèi)存足夠大的話,可以直接使用強(qiáng)引用作為緩存即可,同時可控性更高。因而,他們常見的是被使用在桌面應(yīng)用系統(tǒng)的緩存。

上述內(nèi)容就是如何理解JVM中Java對象的大小與引用類型,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:如何理解JVM中Java對象的大小與引用類型
文章源于:http://jinyejixie.com/article48/ggidep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站制作、建站公司、搜索引擎優(yōu)化云服務(wù)器、標(biāo)簽優(yōu)化

廣告

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

成都網(wǎng)站建設(shè)公司
健康| 崇礼县| 建平县| 美姑县| 永仁县| 克东县| 河源市| 家居| 额敏县| 五寨县| 阿拉尔市| 加查县| 余江县| 行唐县| 高要市| 林周县| 康定县| 晋州市| 平江县| 牟定县| 临猗县| 新民市| 泗水县| 德江县| 江孜县| 卢龙县| 彰化县| 扶风县| 治多县| 元谋县| 南乐县| 新泰市| 视频| 黑水县| 泽库县| 民乐县| 罗平县| 台江县| 炎陵县| 右玉县| 锦屏县|