回答
做到這一點,最簡單的方法是把一些測試代碼的對象寫入到文件中。然後,看看文件的大小。
,或者,如果你不想寫入到磁盤(和你的對象都不會吹出來的內存):
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:
因爲你的對象是可序列化已經 - 您可以使用ObjectOutputStream的大小()方法來做到這一點。
ObjectOutputStream沒有大小的方法 - 你可能想澄清你的意思。 – McDowell 2009-01-22 11:38:09
我的意思是ByteArrayOutputStream - 感謝您的更正。 – Fortyrunner 2009-01-22 11:56:41
唉,看着它,這種機制是不可靠的 - 見我的帖子。 – McDowell 2009-01-22 12:02:07
數個月前,我發現這篇文章Instrumentation Memory Counter在Javaspecialist網站,有關計算的Java對象的內存使用情況。也許它可能對你有所幫助。
這是不夠的 - 類也可以被髮送作爲其實例的序列化形式。
該類只應發送一次,它將是它在磁盤上的大小。 你只發送一次或多次發送該對象?如果後者的規模不應該很重要。
你需要檢查你正在使用的第一件事RMI協議。如果您使用的是EJB 3它可能會調用CORBA(RMI-IIOP)。如果要提高性能,可以使用RMI過壓IOP(ZIOP) - GIOP的壓縮版本,可降低帶寬使用量。請嘗試將目標精簡爲使用常用字符串枚舉的http://docs.jboss.org/jbossremoting/2.5.2.SP2/html_single/
- 1. 如何測量Ruby對象的大小?
- 2. 如何獲取使用RMI發送的對象的字節大小?
- 3. 確定通過netowrk發送的對象的大小
- 4. 通過android上的藍牙發送對象,我如何serialise對象和發送?
- 5. Python:通過UDP發送大對象
- 6. 如何通過套接字發送非常大的對象
- 7. 有沒有辦法通過RMI對象發送事件?
- 8. 異常時,通過RMI參數發送對象
- 9. 當我的代碼嘗試通過RMI發送一個反序列化的對象時,如何引發異常?
- 10. 通過網絡發送對象向量
- 11. 如何通過包發送對象
- 12. 如何通過TCP發送JSON對象?
- 13. 如何通過servlets發送對象
- 14. Angular:如何通過$ http.get發送對象?
- 15. 如何通過intent發送對象
- 16. 我將如何通過HTTP POST發送填充對象的NSArray?
- 17. 發送非常大的對象在網絡上與RMI
- 18. 測量.NET對象的大小
- 19. 測量HttpSession對象的大小
- 20. 通過tcp發送可發送對象
- 21. JSON對象的大小通過的WebSockets
- 22. 通過Intent向對象發送對象
- 23. 如何測量WPF/Silverlight中的Path對象的大小?
- 24. 通過RTCDataChannel發送測量數據量
- 25. 通過RMI傳送對象的數據(具體而言,服務器變量)
- 26. RMI或Servlets通過防火牆將對象發送到applet或從applet發送對象?
- 27. JS如何測量FormData對象的大小?
- 28. 如何通過AJAX發送大量不同的數據
- 29. 如何通過Php/MySQL發送大量(10,000+)的電子郵件?
- 30. 通過帶有對象輸入/輸出流的Socket發送的對象的大小真的很重要嗎?
的一種方式。確保你也使用transient來填充你不想序列化的字段。編寫你自己的readObject/writeObjects,並實現一個版本控制系統。 – Fortyrunner 2009-01-22 10:24:47