Java中數(shù)組在內(nèi)存中存放原理的講解
Java中數(shù)組被實(shí)現(xiàn)為對象,它們一般都會(huì)因?yàn)橛涗涢L度而需要額外的內(nèi)存。對于一個(gè)原始數(shù)據(jù)類型的數(shù)組,一般需要24字節(jié)的頭信息再加上保存值所需的內(nèi)存,其中24字節(jié)的頭信息分別包含以下幾個(gè)部分。
下面分別分析一維、二維、三維的數(shù)組存儲情況。
下面首先對一維數(shù)組進(jìn)行分析,以int[]型數(shù)組為例,假設(shè)數(shù)組長度為N,那么需要的內(nèi)存占用(24+4N)個(gè)字節(jié),原因分析比較簡單,圖解示例如下:即占用內(nèi)存總量=頭信息內(nèi)存+數(shù)組N個(gè)int值占用內(nèi)存。
對于二維數(shù)組進(jìn)行分析,首先對于多維數(shù)組的概念,大家可以參考這篇文章:http://chabaoo.cn/article/154585.htm
多維數(shù)組實(shí)際存儲的時(shí)候就是一維數(shù)組,高維數(shù)組不斷的降維轉(zhuǎn)化為低維數(shù)組,例如二維數(shù)組就是一個(gè)數(shù)組的數(shù)組,即每一個(gè)一維數(shù)組里面包含一個(gè)另外一個(gè)一維數(shù)組的引用。以一個(gè)MxN的double類型的二維數(shù)組為例,其實(shí)際占用內(nèi)存總量為:(8MN+32M+24) 約等于8MN。這里仍然以圖示進(jìn)行講解:(這里以64位架構(gòu)的計(jì)算機(jī)為例,每個(gè)對象引用地址為8位)
對于三維數(shù)組的分析,仍然以M x N x Q的double數(shù)組為例,與上面的分析過程類似,可以將三維數(shù)組轉(zhuǎn)化成一個(gè)一維數(shù)組,該一維數(shù)組保存指向二維數(shù)組的引用。對于二維數(shù)組的分析過程則和上面的過程一樣。
則占用的內(nèi)存總共為:24 + 8M + M*(24 + 8N) + M*N(24 + 8Q)字節(jié)。
對于更高維的數(shù)據(jù)存儲容量,可以按照相似的方法進(jìn)行分析即可。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- Java關(guān)于含有繼承類的成員初始化過程講解
- Java接口名稱沖突問題的講解
- Java中關(guān)于子類覆蓋父類的拋出異常問題
- Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?
- Java反射機(jī)制的講解
- Java為什么匿名內(nèi)部類參數(shù)引用需要用final進(jìn)行修飾?
- 關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法
- Java中轉(zhuǎn)換器設(shè)計(jì)模式深入講解
- java集合與數(shù)組的相同點(diǎn)和不同點(diǎn)
- 如何理解Java中基類子對象的構(gòu)建過程從"基類向外"進(jìn)行擴(kuò)散的?
相關(guān)文章
net.sf.json.JSONObject 為null 的判斷方法
下面小編就為大家?guī)硪黄猲et.sf.json.JSONObject 為null 的判斷方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02淺談spring-boot-rabbitmq動(dòng)態(tài)管理的方法
這篇文章主要介紹了淺談spring-boot-rabbitmq動(dòng)態(tài)管理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題
這篇文章主要介紹了IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題,這里小編使用的2020.2.2企業(yè)破解版本,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09SpringBoot中的@ApiModelProperty注解作用
這篇文章主要介紹了SpringBoot中的@ApiModelProperty注解作用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01