亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4045 | 回復: 1
打印 上一主題 下一主題

計算Java Serializable對象大小的方法 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-01-23 01:00 |只看該作者 |倒序瀏覽

                  在Cahce的設計中,一般會考慮兩種對象管理方法,一是按對象大小,比如開一個10M字節(jié)的cahce空間。另外一個是按對象的數(shù)量,比如1000個對象的cache空間。
  對于按對象尺寸管理的cache,由于Java對象的實際內存大小不好獲得(我是不知道如何計算的),所以一般就使用一個Serializable對象的序列化尺寸來代替,序列化時通常把一個對象序列化到一個字節(jié)buffer里,那么就可以獲得這個buffer的字節(jié)數(shù)。今天,在工作中,突軟想到這樣做太浪費空間,看了Java的ObjectOutputStream這個類的源碼,發(fā)現(xiàn)也可以如下做,只計數(shù),不產生字節(jié)轉移,那么就不會耗費內存空間了。
               
               
                public final class SizeCalculator {
    public static int calcSize(java.io.Serializable o) {
        int ret = 0;
   
        class DumbOutputStream extends OutputStream {
               int count = 0;
               public void write(int b) throws IOException {
                count++; // 只計數(shù),不產生字節(jié)轉移
               }
        }
        DumbOutputStream buf = new DumbOutputStream();
        ObjectOutputStream os = null;
        try {
               os = new ObjectOutputStream(buf);
               os.writeObject(o);
               ret = buf.count;
        } catch (IOException e) {
              // No need handle this exception
              e.printStackTrace();
              ret = -1;
        } finally {
             try {
               os.close();
             } catch (Exception e) {
              }
        }
        return ret;
    }
    public static void main(String[] args){
        System.err.println(calcSize(1));
    }

               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/29188/showart_2158201.html

論壇徽章:
0
2 [報告]
發(fā)表于 2010-01-29 09:25 |只看該作者
你剛發(fā)表了6天就被我用了,頂一個
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP