当前位置: 首页 > 知识库问答 >
问题:

如果对象的类型与Unity中的瞬态生命管理器映射,垃圾回收器会回收对象吗?

龚博涛
2023-03-14

如果对象的类型映射到Unity中的TransientLifetimeManager,垃圾收集器会回收该对象吗?

我假设垃圾回收器会回收对象。所以,这让我问以下问题:那么瞬态生命管理器外部控制生命管理器之间的区别是什么?两者都不跟踪对象的生存期。

如果用瞬态生命时间管理器注册的类型无法回收,我还有一个问题:为什么开发人员会做出这样的决定?保留用瞬态生命时间管理器注册的类型似乎是不合理的,因为可能会创建很多类型。而且,一旦创建了用瞬态生命时间管理器注册的类型的对象,IoC容器只能向消费者提供一次引用,因此,保留对对象的引用也是没有意义的。

笔记

这个问题与Unity3D完全无关。请保持专业,如果你不知道它是关于什么的,不要编辑这个问题。

共有1个答案

淳于飞文
2023-03-14

TransientLifetimeManager不跟踪lifietime,但它会根据解析创建新实例ExternallyControlled LifetimeManager不跟踪生存期,只创建一个实例。容器只保存对对象的弱引用,所以在容器处理后,对象将保持活动状态。

更多信息请参阅文章和示例。

 类似资料:
  • 问题内容: 我要求显式垃圾回收器调用。但是窗口并没有从屏幕上消失,为什么垃圾回收器不回收JFrame的对象? 问题答案: 当被创建时,它注册本身在一些内部摇摆的数据结构,其允许它接收到类似的鼠标点击的事件。这意味着在您告诉Swing使用摆脱窗口之前,存在对潜伏在某处的对象的引用。

  • 昨天,我们讨论了垃圾收集。 有人讨论过,使用类创建的对象由垃圾收集器收集,但如果是使用struct创建的,则不能由GC收集 我知道结构使用堆栈,类使用堆。 但是,我猜GC永远不会只收集非托管代码。这是否意味着结构类型是非托管代码。(我不这么认为)。 还是GC只负责堆而不负责堆栈? 如果是,那么int数据类型呢。int是struct而不是class。那么,如果我们定义int类型的对象,它不是由GC管

  • 当Tester类的主方法结束时,有多少对象符合垃圾收集的条件?我的印象是答案是两个,尤其是a1,b1。然而,我找到了一个正确的答案,那就是只有一个对象是合格的。我认为,由于我们没有将b1指定为a2中的成员变量,b1在主要结束之前被分配为null,所以应该由垃圾收集器收集。什么是真的?

  • 主要内容:垃圾回收算法,1、垃圾回收器的分类,2、串行垃圾回收器,3、吞吐量优先,4、响应时间优先,5、G1(Garbage First,jdk9默认),6、Full GC垃圾回收算法 1.标记清除 2.标记复制 3.标记整理 内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度) 内存整齐度:复制算法=标记清除算法>标记压缩算法 内存利用率:复制算法<标记清除算法=标记压缩算法 年轻代: 存活率低 复制算法 老年代: 区域大,存活率高 标记清除(内存碎片不是太多)+标记压缩共同实现 1、

  • 1.CMS介绍 CMS(Concurrent Mark-Sweep)(并发 标记-清除)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。 是标记清除算法的落地实现的垃圾回收器。 2.CMS过

  • 主要内容:垃圾回收算法,1、垃圾回收器的分类,2、串行垃圾回收器,3、吞吐量优先,4、响应时间优先,5、G1(Garbage First,jdk9默认),6、Full GC垃圾回收算法 1.标记清除 2.标记复制 3.标记整理 内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度) 内存整齐度:复制算法=标记清除算法>标记压缩算法 内存利用率:复制算法<标记清除算法=标记压缩算法 年轻代: 存活率低 复制算法 老年代: 区域大,存活率高 标记清除(内存碎片不是太多)+标记压缩共同实现 1、