gpt4 book ai didi

c# - 所有事件的 ThreadLocal 和 [ThreadStatic] 引用的列表

转载 作者:太空狗 更新时间:2023-10-29 23:37:13 25 4
gpt4 key购买 nike

我怎样才能得到当前保存在 ThreadLocal 中的所有引用文献的列表?或 ThreadStatic存储?

即所有不能被垃圾回收的对象,因为某个线程在其 thread-local storage 中持有对该对象的引用.

我可以在不知道它们的名称或类型的情况下使用反射来找到这些实例,或者至少找到它们的总大小吗?

或者失败了,有什么方法可以在 Visual Studio 2010 中显示它们?(我正在寻找除了成熟的内存分析器之外的东西)

我的动机是这样的:我刚刚发生了一次非常严重的内存泄漏,其中 ConcurrentBag 的内容由各种 ThreadPool 线程持有,即使原来的 ConcurrentBag 早已超出范围并被垃圾收集。虽然我解决了这个特殊的错误,但我想知道是否还有更多这样的错误潜伏在周围。

理想情况下,我希望通过某种方式在运行时定期记录线程本地存储所持有的对象数量及其大小。

最佳答案

不幸的是,没有办法做到这一点。

相反,您应该确保使用 IDisposable 实现进行清理,并在适当的地方使用(某些 IDisposable)。

框架本身会为您计算引用,但没有 API 可以将此信息公开给正在运行的代码。

关于c# - 所有事件的 ThreadLocal<T> 和 [ThreadStatic] 引用的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38070948/

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