网页设计师联盟

--- 学习、交流、展示、资源

招聘精英个人求职网站发布网友作品网页特效动画欣赏网页素材免费资源源码下载设计软件
作品欣赏       域名申请       虚拟主机
网页设计师

  • 新闻资讯
  • 网页教程
  • 平面教程
  • 程序设计
  • 视频教程
  • Flash教程

网页设计师站提供网页设计程序设计服务 E-mail:liangfeng0526@qq.com

 您当前的位置:首页 > 阅读文章
网页设计师联盟(www.wysjs.cn)欢迎您!
 标题:

计算Java Serializable对象大小的方法

在Cahce的设计中,一般会考虑两种对象管理方法,一是按对象大小,比如开一个10M字节的cahce空间。另外一个是按对象的数量,比如1000个对象的cache空间。

  对于按对象尺寸管理的cache,由于Java对象的实际内存大小不好获得(我是不知道如何计算的),所以一般就使用一个Serializable对象的序列化尺寸来代替,序列化时通常把一个对象序列化到一个字节buffer里,那么就可以获得这个buffer的字节数。今天,在工作中,突软想到这样做太浪费空间,看了Java的ObjectOutputStream这个类的源码,发现也可以如下做,只计数,不产生字节转移,那么就不会耗费内存空间了。

  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++; // 只计数,不产生字节转移

  }

  }

  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));

  }

  }


本文来自“北大青鸟济南新东方(山东大学)校区”网站 http://www.0531accp.com 
原文链接:http://www.0531accp.com/zxzx/show___id=483.html

  • (刊登方式:   来源:--   作者:   添加:bdqnxindongfang   关键词:)
  • 您已阅读:计算Java Serializable对象大小的方法 您还可以继续阅读↓  或 回到首页看看>>>
  • 上一篇DWRUtil的方法使用说明

    1.$();   功能:相当于document.getElementById(id);   参数:id或name属性值;   例:   <script>   Varele=$(txt_test);   Varstr=DWRUtil.toDescriptiveString(ele,1)   DWRUtil.debug(str);   </script>   2.DWRUtil.ge..

  • 下一篇菜鸟入门:Java语言学习六大要点

    Java的学习是比较复杂的,主要表现在相关的一系列平台、规范和协议上。有经验的Java程序员都知道,只掌握了Java语言本身很难开发应用程序。本文不讨论这些复杂的概念,而是我是在北京参加的培训,现在从初学者的角度,对于Java语言本身的学习提出自己的见解和建议。本文的讨论基于以下假设: 1..