gpt4 book ai didi

C# 在垃圾收集之前查找特定类的未使用对象

转载 作者:行者123 更新时间:2023-12-01 19:52:41 25 4
gpt4 key购买 nike

您好,非常感谢您的帮助!

有人有在垃圾收集之前找到特定类的未引用对象的好主意吗? (最好尽快)

就我而言,我需要创建许多特定类的小对象,仅供临时使用。问题是我不知道什么时候不再需要该对象。我想在垃圾收集之前收集不再被引用的该类的对象(尽快),以便我可以回收它们并且不需要创建新的它们。我认为这会使代码更快。

亲切的问候,大卫

最佳答案

首先,在执行此操作之前,您应该进行广泛的分析,以确定您确实确实存在由收集压力引起的性能问题。垃圾收集器经过高度调优,大部分时间都工作得很好;出于性能原因需要池化对象的情况很少见。

我实际上处于那种情况;我们通过广泛的测试确定,我们一直临时使用某些对象(本质上是其他对象的“构建者”),并且频繁重新分配它们所造成的收集压力的成本是可衡量的且很高。

我们所做的是有一个池类,它维护一个“空白”对象数组。当您需要一个新对象时,池会检查数组并返回数组中的一个对象(如果有的话),从而清空数组条目。如果我们没有,那么它会创建一个新对象。当临时用户使用完该对象后,它将其传递回池,池将其“清空”并将其放回数组中。 (如有必要,增加数组。)

如果用户忘记将对象放回池中,或者由于在“放回池中”调用之前引发异常而无法这样做,谁在乎呢?在这种情况下,我们所做的一切可能只是稍微取消优化 future 的分配。代价是您需要记住在使用完对象后将其放回池中。

据我所知,没有办法“ Hook ”垃圾收集器来自动将东西放回池中。

关于C# 在垃圾收集之前查找特定类的未使用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366954/

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