【发布时间】:2016-02-14 02:09:01
【问题描述】:
在捕获转储文件并对其进行分析时(例如在WinDbg中),我经常收到警告说数据可能不准确,或者命令可能无法访问,因为转储文件时进程正在GC中间被收集了。
在做内存分析时,我们经常这样做,因为进程上的内存很高,内存压力很大,我猜这迫使.NET经常进行GC。
如何避免在 GC 期间进行转储?有没有办法知道何时可以安全地捕获转储文件?
【问题讨论】:
-
您可能想使用 PerfView,它的设计考虑到了这个问题。帮助 |用户指南有一个名为“GC Heap collection: To Freeze or not to Freeze?”的部分。其中讨论了这一点。下载链接为:microsoft.com/en-us/download/details.aspx?id=28567
-
如果您需要帮助,请通过实施/测试我的答案给我留言。
-
@Mark:在你的应用中,有没有后台进程?我的意思是,如果用户不使用它,它还能在幕后处理一些事情吗?
-
@Mark:也许我们可以使用ProcDump 和
-pl开关。 -
@Thomas 我已经用
ProcDump测试了你的方法,它对我来说效果很好。我也更新了答案,希望对您有所帮助...
标签: c# .net memory-leaks garbage-collection dump