List與陣列占用位元組數

2021-08-30 18:32:13 字數 1100 閱讀 8548

想看一下list序列化後占用多少個 位元組,測試程式如下:

public static void main(string args) throws ioexception

system.out.println("元素數:" + list.size());

bytearrayoutputstream baos = new bytearrayoutputstream();

objectoutputstream os = new objectoutputstream(baos);

os.writeobject(list);

os.close();

system.out.println("位元組數:" + baos.size());

baos.close();

}

[b]輸出結果:[/b]

元素數:0

位元組數:48

元素數:1

位元組數:125

元素數:2

位元組數:135

元素數:3

位元組數:145

元素數:2000

位元組數:20115

[color=red]可以看出超過乙個元素後 每增加乙個增加10個位元組

可簡單的理解為每個整形佔10位元組[/color]

==============================

[b]同樣的程式改用int[], 整形陣列測試結果如下[/b]:

元素數:0

位元組數:27

元素數:1

位元組數:31

元素數:2

位元組數:35

元素數:3

位元組數:39

元素數:2000

位元組數:8027

[color=red]每個元素佔4個位元組[/color]

===========================

[color=red]可以看出int[]比list節省很多的記憶體

差不多2.5倍吧[/color]

用memcached來快取 的話

用陣列是比較合算的,可惜陣列不能動態變化

或者可採用字串的方式,如『1#2#3#4』這樣

占用位元組數求法

字串占用位元組數 ansi char szstr abc 占用位元組數求法 sizeof szstr char psz defgh 占用位元組數求法 strlen psz sizeof char unicode wchar t szwstr l abc 占用位元組數求法 sizeof szwstr ...

Oracle 漢字占用位元組數

在oracle中乙個字元特別是中文字元佔幾個位元組是與字符集有關的。比如gbk,漢字就會佔兩個位元組,英文1個 如果是utf 8,漢字一般佔3個位元組,英文還是1個。但是一般情況下,我們都認為是兩個位元組處理,因為oracle安裝時候預設我們都選擇gbk的編碼格式,但是我們在頁面做輸入字串長度的校驗...

C語言常見型別占用位元組數

整數是程式設計中常用的一種資料,c語言通常使用int來定義整數 int 是 integer 的簡寫 這在 大話c語言變數和資料型別 中已經進行了詳細講解。在現代作業系統中,int一般占用 4 個位元組 byte 的記憶體,共計 32 位 bit 如果不考慮正負數,當所有的位都為 1 時它的值最大,為...