【问题标题】:Size of object serialized in File文件中序列化对象的大小
【发布时间】:2012-03-22 09:23:10
【问题描述】:

如何测量我的对象的大小,这意味着我的对象序列化所占用(占用)的内存大小?

FileOutputStream fos = new FileOutputStream("personne.serial");

    ObjectOutputStream oos = new ObjectOutputStream(fos);
    try {
        oos.writeObject(p);
        oos.flush();
    } finally {
        try {
            oos.close();
        } finally {
            fos.close();
        }
    }

【问题讨论】:

  • 我不知道什么不清楚!我有一个对象序列化,我想计算这个对象在内存中占用的内存!什么不清楚?
  • Size of object serialized的可能重复
  • @skaffman :在最后一个问题中,最后的回答是关于 table 中的序列化,但她在 FIle 中!
  • 现在清楚了,你没有说“内存大小”
  • @Mehdi:你问了一系列非常相似的问题,但没有解释它们与以前的问题有何不同,也没有解释为什么你没有为清晰起见编辑它们或接受任何人的答案。如果你继续这样做,没有人会付出任何努力。

标签: java serialization


【解决方案1】:

据我所知。对象占用的内存量取决于实现,它可能在不同的 JVM 上有所不同,还取决于 jvm 运行的平台。我不相信使用stand apis 可以准确计算。

【讨论】:

  • 但是当我使用 ByteArrayOutputStream 序列化一个对象时我有一个异常java.lang.StackOverflowError,有一个解决方案来扩展 ByteArrayOutputStream 的长度吗? ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
  • 这里需要看更多代码,需要看你要序列化的对象和典型内容。
  • 一个序列化的对象很大,它是一个有多个对象的分布式算法!
  • 我用这个方法序列化:public void serializ(Object m ) throws IOException { ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(); ObjectOutputStream stream = new ObjectOutputStream(byteOutput); stream.writeObject(m); sumMemory += byteOutput.toByteArray().length; }
  • 很好地解释了这里可能出现的问题stackoverflow.com/questions/438875/…
猜你喜欢
  • 2011-11-01
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2016-04-29
  • 1970-01-01
  • 2013-11-10
相关资源
最近更新 更多