0

table を使用してメモリ内の同じオブジェクトをシリアル化する理由を知りたい:

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シリアル化も同じです!

4

2 に答える 2

1

オブジェクトがコードからのものであると仮定すると、m状態が異なるようです ( overhead)。シリアル化は再帰的であるため、オブジェクトだけでなく、それに含まれる他のすべてのオブジェクトも同じでなければなりません。

より詳細な情報を投稿して、より完全な回答を得るためにm接続してください。overhead

于 2012-04-24T09:14:51.250 に答える
0

実行間で何か異なります。たとえば、オブジェクトで現在の時刻を使用していますか?

より多くの文脈を示すか、何が違うのかを自分で見つけようとするかもしれませんが、何も変わっていないと言う限り、結果は説明を見つけることができません...

問題を減らすようにしてください。m.view() は常に同じ結果をもたらすとあなたは言いますが、どうすればわかりますか? 常に同じ結果を返す場合は、結果を文字列にハードコーディングし、同じ文字列を数回シリアル化しても結果が異なることを示してください...

于 2012-04-24T10:55:40.380 に答える