序列化相同的对象,观察不同的结果
问题描述:
我想知道为什么当我使用表序列化同一对象内存:序列化相同的对象,观察不同的结果
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
stream.writeObject(m.view()); //view return a string
stream.flush();
stream.close();
byteOutput.flush();
byteOutput.close();
,我跑我的程序好几次,我得到不同的结果(而不是差异很大,但仍有差异)
execution 1 :4497
execution 3 :4500
execution 4 :4500
execution 5 :4494
m:是一个包含其他类的另一个对象的对象。我不能列出所有的类在这里,这是一个大的框架,string
序列是一样的!
答
假设你的目标是你的代码m
看来你有不同的状态(overhead
)。由于序列化是递归的,不仅是你的对象,而且它包含的所有其他对象必须是相同的。
请张贴m
更多的信息,它是连接overhead
了更完整的答案。
+0
是的,我知道,它不仅需要我的对象,还需要其中包含的所有其他对象。但是,当我运行几次时,所有执行都是相同的(相同的数据输入,相同的对象,相同的环境,全部相同)。 – Mehdi 2012-04-24 09:26:52
答
东西是你的执行方式不同,你是否在你的对象中使用当前时间?
您可以告诉我们更多的情况下,或尝试自己找出什么不同,但只要你说什么不同,但结果你会找不到解释...
尽量减少问题是,你说m.view()的结果总是相同的,你怎么知道的?如果它总是返回相同的结果,硬编码的结果在一个字符串,并告诉我们,相同的字符串序列化多次给出不同的结果...
什么是'M'和'overhead'?也许尝试发布一个完整的SSCCE(http://sscce.org)? – 2012-04-24 09:06:55
如果大小不完全相同,则对象也不相同。 – 2012-04-24 09:28:12
是相同的大小,相同的是执行,它都一样:) – Mehdi 2012-04-24 09:36:08