我有一個類,我想看看當這個類的對象被序列化時哪個子對象佔據了最多的空間。除了查看代碼並手動分析代碼之外,是否有任何好的工具/方法來執行此操作?Java - 簡單的方法來檢查序列化對象的結構?
例如,我希望工具說「會員a佔20%,b 30%,會員c佔50%」。
謝謝
P.S.我發現了一些相關的問題,但沒有找到答案在那裏我的具體問題。
我有一個類,我想看看當這個類的對象被序列化時哪個子對象佔據了最多的空間。除了查看代碼並手動分析代碼之外,是否有任何好的工具/方法來執行此操作?Java - 簡單的方法來檢查序列化對象的結構?
例如,我希望工具說「會員a佔20%,b 30%,會員c佔50%」。
謝謝
P.S.我發現了一些相關的問題,但沒有找到答案在那裏我的具體問題。
嗯,我從來沒有聽說過這樣的工具。但我認爲內存中的對象大小和序列化對象大小之間存在一些關係。因此,您可以嘗試使用Profiler:VisualVM,它包含在JDK或我最喜歡的YourKit Profiler中。
計算對象大小的唯一相對較快的方法是首先編寫整個對象,計算使用情況(例如,寫入ByteArrayOutputStream),然後寫入每個引用的對象。
有一對夫婦的這種考慮:
對於協議的描述,請閱讀this description。
這就是我認爲要這樣做的方式,除非我會得到更好的答案,這將是方式。謝謝。 – duduamar
可能與提到
serialysis
工具:(http://marxsoftware.blogspot.com/2011/12/estimating-java-object-sizes-with [與儀表估計Java對象尺寸] .html) – npe請參閱我對#alexey28的評論 - 我對序列化對象的結構感興趣,而不是內存中對象的結構 – duduamar
java中沒有'子對象'。這不是一個語義問題。如果一個對象的兩個成員本身擁有共同成員,那麼你如何計算這個份額? – aalku