JVM概念之Java對象的大小與參考型別

來源:互聯網
上載者:User
文章目錄
  • Java對象的大小
  • 參考型別
參考文獻

1.JVM調優總結(二)-一些概念

2.Java深度曆險(四)——Java記憶體回收機制與參考型別

本文

在參考文獻1中,總結了JVM概念中的Java對象的大小,以及三種參考型別的定義與區分。

Java對象的大小

  基本資料的類型的大小是固定的,這裡就不多說了。對於非基本類型的Java對象,其大小就值得商榷。在Java中,一個空Object對象的大小是8byte,這個大小隻是儲存堆中一個沒有任何屬性的對象的大小。看下面語句:

Object ob = new Object();

  這樣在程式中完成了一個Java對象的生命,但是它所佔的空間為:4byte+8byte。4byte是上面部分所說的Java棧中儲存引用的所需要的空間。而那8byte則是Java堆中對象的資訊。因為所有的Java非基本類型的對象都需要預設繼承Object對象,因此不論什麼樣的Java對象,其大小都必須是大於8byte。

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

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

  其大小為:Null 物件大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小(4byte)=17byte。但是因為Java在對對象記憶體配置時都是以8的整數倍來分,因此大於17byte的最接近8的整數倍的是24,因此此對象的大小為24byte。

  這裡需要注意一下基本類型的封裝類型的大小。因為這種封裝類型已經成為對象了,因此需要把他們作為對象來看待。封裝類型的大小至少是12byte(聲明一個空Object至少需要的空間),而且12byte沒有包含任何有效資訊,同時,因為Java對象大小是8的整數倍,因此一個基本類型封裝類的大小至少是16byte。這個記憶體佔用是很恐怖的,它是使用基本類型的N倍(N>2),有些類型的記憶體佔用更是誇張(隨便想下就知道了)。因此,可能的話應盡量少使用封裝類。在JDK5.0以後,因為加入了自動類型裝換,因此,Java虛擬機器會在儲存方面進行相應的最佳化。

參考型別

  對象參考型別分為強引用、軟引用、弱引用和虛引用。

  強引用:就是我們一般聲明對象是時虛擬機器產生的引用,強引用環境下,記憶體回收時需要嚴格判斷當前對象是否被強引用,如果被強引用,則不會被記憶體回收。

  軟引用:軟引用一般被做為緩衝來使用。與強引用的區別是,軟引用在記憶體回收時,虛擬機器會根據當前系統的剩餘記憶體來決定是否對軟引用進行回收。如果剩餘記憶體比較緊張,則虛擬機器會回收軟引用所引用的空間;如果剩餘記憶體相對富裕,則不會進行回收。換句話說,虛擬機器在發生OutOfMemory時,肯定是沒有軟引用存在的。

  弱引用:弱引用與軟引用類似,都是作為緩衝來使用。但與軟引用不同,弱引用在進行記憶體回收時,是一定會被回收掉的,因此其生命週期只存在於一個記憶體回收周期內

  強引用不用說,我們系統一般在使用時都是用的強引用。而“軟引用”和“弱引用”比較少見。他們一般被作為緩衝使用,而且一般是在記憶體大小比較受限的情況下做為緩衝。因為如果記憶體足夠大的話,可以直接使用強引用作為緩衝即可,同時可控性更高。因而,他們常見的是被使用在案頭應用系統的緩衝。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.