![](/img/trans.png)
[英]How can I find out the serialVersionUID of a serialized Java object?
[英]How can I read the size in bytes of a serialized object in Java?
在反序列化之前或之后,是否可以從流中讀取序列化對象的總使用大小?
我能找到的唯一方法是再次將其序列化為字節緩沖區,然后查看該緩沖區的總占用大小。 這行得通,但似乎浪費資源。
編輯:我對對象實例加載到內存時使用的空間不感興趣。 僅序列化的大小(以字節為單位)。
您將無法在反序列化之前確定大小,因為序列化協議不會浪費時間來預先計算輸出的大小。 它只是處理對象直到完成。
要在反序列化后讀取大小,可以在ObjectInputStream
和基礎流之間插入一個CountingInputStream 。
編輯:如果您絕對需要確定大小預序列化,那么我想您可以序列化為ByteArrayOutputStream
,並將結果字節寫入輸出。 但這將要求發送者和接收者都同意如何處理字節。
序列化的大小是所有字段及其本身的總和。 我假設您已經找到了一種檢查對象大小的好方法,因此請檢查對象的大小,然后將其添加到所有字段中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.