java - jVisualVM 的内存检查器中的 "retained size"是什么意思?

标签 java profiling heap-memory jvisualvm

摘要选项卡上的 Jvisualvm 堆转储具有按保留大小检查最大对象的功能。

保留的真正含义是什么?如何计算和显示对象树的大小?
如果我可以在这里看到对象 (10M) 及其成员对象 (5M),我应该如何计算堆影响。两者都是占用heap的10M还是15M?
为什么我看不到我们的外观巨大的应用程序对象?

谢谢。

最佳答案

What does retained really mean?

full gc 后会有多大。例如。具有大量条目的 WeakHashMap 在 GC 后可能为空。

How size of an object tree is calculated and shown here?

JVM 使用内部 API 确定这一点。

In case I can see here object (10M) and it's member object (5M) how should I calculate heap impact. Does both of them took 10M or 15M of the heap?

总计 10 MB。如果这是您最大的问题,请不要担心,除非您的机器只有几百 MB。 (在这种情况下我会升级它)

Why I can't see none of our facade huge application objects?

也许它们的内存没有你想象的那么大??例如它们的加载成本可能很高,但这并不会使它们变大。

顺便说一句:VisualVM 是一个不错的免费内存分析器,但它只对发现明显的问题有用。我会尝试使用像 YourKit 这样的商业分析器(你可以获得免费的评估许可证)进行比较。

关于java - jVisualVM 的内存检查器中的 "retained size"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600744/

相关文章:

java - 将 FreeMarker 与 EXPOSE_PROPERTIES_ONLY 结合使用

java - 关于应用于栈和队列的排序算法

java - flexmojo java堆空间错误

spring - SocketInputStream.socketRead0占用应用程序时间的30%

java - 永久增加java堆大小?

Elasticsearch 服务在数据插入 jvm 堆时挂起并终止

java - android - 用随机颜色绘制形状

java - 进入多窗口模式时奇怪的生命周期回调排序

php - NewRelic - 如何忽略 PHP 应用程序的一部分

delphi - 尝试访问 TWebbrowsers HTML 时应用程序锁定