- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在调查我们的应用程序中的 GC 和内存使用情况,并注意到我们似乎有成千上万的终结幸存者。不幸的是,仅凭数字并不能真正告诉我我们是否有问题。然而,我们看到了一般的性能问题,而且我们确实有很高的内存使用率并且在 GC 上花费了大量时间。
理想情况下,我们无法控制的任何东西都不应该进入终结队列。如果是这样,那就是一个错误。有什么方法或工具可以用来检查吗?我听到的一个建议是有一个带有终结器的特殊构建,在它们被执行时记录下来,但这是相当多的努力,并且只适用于我们拥有其类型的对象。有没有更简单的方法?
是否值得调查终结幸存者?如果是,怎么办?
最佳答案
使用WinDbg与 Psscor2或 Psscor4扩展名(取决于您的应用程序使用的版本)。不幸的是,目前还没有 .NET 4.5 的版本。设置调试环境(安装 WinDbg 并将 Psscor 文件复制到其文件夹)后,创建进程转储。例如,您可以在 Procdump 的帮助下轻松完成工具:
procdump -ma <PID>
然后使用 File -> Open Crush Dump 选项加载转储。加载适当版本的 Psscor:
.load psscor4
然后执行命令从 Microsoft 服务器下载符号(如果需要),确保您有互联网连接:
!symfix
从现在开始,您应该可以访问许多非常有趣的命令(查找 !help
以列出它们)。查看完成队列:
!finalizequeue
在那里你会有一个对象列表,比如:
7aa143e0 166 20,584 System.Diagnostics.PerformanceCounter
79b5f6c8 543 21,720 System.Reflection.Emit.DynamicResolver
673893a8 953 22,872 System.Web.HttpResponseUnmanagedBufferElement
这可能对您有很大帮助。但您也可以检查这些对象 ( !do 7aa143e0
)、查找引用 ( !gcroot <address>
) 等。
关于c# - 我如何调查终结队列和终结幸存者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20121401/
GraphDB 与 Key-ValueDb 的对比 Neo4j 与 OrientDB瓦尔地魔与 OrientKV 可供选择和比较的特征 易于安装(无依赖,只需放置/解压到文件夹) 性能和可扩展性 占地
我是一名优秀的程序员,十分优秀!