簡體   English   中英

如何讀取Java中序列化對象的大小(以字節為單位)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM