gpt4 book ai didi

java - YourKit - 对象的保留大小不等于它引用的所有对象的保留大小

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:09 26 4
gpt4 key购买 nike

一个对象的保留大小不等于它引用的所有对象的保留大小。

这是正在发生的事情:

  1. 使用 YourKit 捕捉内存快照。
  2. 点击一个对象并按类类型显示实例
  3. 假设实例的保留内存是 A 字节 (600mb)
  4. 展开并对底层实例的保留大小求和,假设总和为 B (300mb)

A >> B

最佳答案

我举个例子。

首先,您需要了解什么是保留大小。来自官方documentation :

Retained size of an object is its shallow size plus the shallow sizes of the objects that are accessible, directly or indirectly, only from this object. In other words, the retained size represents the amount of memory that will be freed by the garbage collector when this object is collected.

简单来说,一个对象的保留大小确实是它引用的对象的总和。下图中Obj1的retained size是Obj1 shallow size,Obj2和Obj3 retained size的总和: simple case

在更复杂的引用模型中情况并非如此。如果 Obj6 开始引用 Obj5,则 Obj5 将无法仅从 Obj2 访问。因此,Obj2 的保留大小现在将仅包括 Obj4,并将排除 Obj5。 retained size of Obj1 is not a sum of Obj2 and Obj3Obj1 的保留大小将保持不变。如果垃圾收集器释放 Obj1,它将释放整个大小为 41 的引用图。但是,如果垃圾回收器只释放 Obj2,它不会释放 Obj5,因为它仍会被 Obj6 引用。

关于java - YourKit - 对象的保留大小不等于它引用的所有对象的保留大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com