簡體   English   中英

jVisualVM 的內存檢查器中的“保留大小”是什么意思?

[英]What does “retained size” mean in jVisualVM's memory inspector?

摘要選項卡上的 Jvisualvm 堆轉儲具有按保留大小檢查最大對象的功能。

保留的真正含義是什么? 此處如何計算和顯示對象樹的大小?
如果我在這里可以看到對象(10M)和它的成員對象(5M),我應該如何計算堆影響。 它們都占用了 10M 還是 15M 的堆?
為什么我看不到我們的外觀巨大的應用程序對象?

謝謝。

保留的真正含義是什么?

完整的 gc 后會有多大。 例如,在 GC 之后,具有大量條目的 WeakHashMap 可能為空。

此處如何計算和顯示對象樹的大小?

JVM 使用內部 API 確定這一點。

如果我在這里可以看到對象(10M)和它的成員對象(5M),我應該如何計算堆影響。 它們都占用了 10M 還是 15M 的堆?

總大小為 10 MB。 如果這是您最大的問題,請不要擔心,除非您的機器只有 100 MB。 (在這種情況下,我會升級它)

為什么我看不到我們的外觀巨大的應用程序對象?

也許它們的內存沒有你想象的那么大?? 例如,加載它們可能很昂貴,但這並不會使它們變大。

順便說一句:VisualVM 是一個不錯的免費內存分析器,但它僅用於發現明顯問題。 我會嘗試使用像 YourKit 這樣的商業分析器(您可以獲得免費的評估許可證)進行比較。

如果我在這里可以看到對象(10M)和它的成員對象(5M),我應該如何計算堆影響。 它們都占用了 10M 還是 15M 的堆?

我認為它實際上占用了 15M 的堆,對象保留大小 10M 意味着,當這個對象(10M)被清掃時,10M 將是空閑的。 成員 object(5M) 仍然被其他對象引用,並且仍然在堆中。 成員對象的保留大小可以大於對象本身。

我認為 VisualVM 中“保留”的最佳定義是垃圾回收后剩余的內存量。

在某些情況下,它可能大於“大小”,因為它直接或間接引用其他對象(或集合)。

暫無
暫無

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

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