想看一下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 時它的值最大,為...