簡體   English   中英

如何在JVisualVM的堆轉儲中計算“大小”

[英]How is “Size” calculated in JVisualVM's Heap Dump

我正在運行Java Visual VM以分析Mule應用程序上的性能,以減少使用的內存量。 當我查看堆轉儲時,我發現char []的大小超過37 MB,String的大小超過28 MB。

我不清楚的是size列如何說明已使用的內存量。 特別是,由於String是char []的抽象,所以我想知道這是否意味着28 MB的String中也存在37 MB的char數組中的一部分,或者它們是否單獨分配。

最重要的是,我還有一個我懷疑正在占用大量內存並包含多個字符串的類,但是根據我的堆轉儲,此類僅使用堆中總內存的6.5%。

所以我想我的問題是...如果我想通過使用更少的String對象來提高自定義類的效率,我會發現報告的Strings和Char [] s使用的內存量減少了,還是僅用於那個特定的班級?

謝謝!

我只需要霍爾格的評論...

“大小僅包括對象本身的內存,不包括任何引用的對象(數組是對象)。”

僅此一項就使我對如何進行優化有了更好的了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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