加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 如何在Windows 7中打开GCStress?

发布时间:2020-12-14 04:13:56 所属栏目:Windows 来源:网络整理
导读:我正在调试 GC堆损坏,并且我想尝试在WinDbg PageHeap AppVerifier GCStress下运行该程序. 我在文章Software crash: faulting module mscorwks.dll,version 1.1.4322.2379中发现我可以像这样启用GCStress: reg.exe add "HKLMSOFTWAREMicrosoft.NETFramewo
我正在调试 GC堆损坏,并且我想尝试在WinDbg PageHeap AppVerifier GCStress下运行该程序.

我在文章Software crash: faulting module mscorwks.dll,version 1.1.4322.2379中发现我可以像这样启用GCStress:

reg.exe add "HKLMSOFTWAREMicrosoft.NETFramework" /f  /v HeapVerify  /t REG_DWORD  /d 1  
reg.exe add "HKLMSOFTWAREMicrosoft.NETFramework" /f  /v StressLog  /t REG_DWORD  /d 1  
reg.exe add "HKLMSOFTWAREMicrosoft.NETFramework" /f  /v GCStress  /t REG_DWORD  /d 3  
reg.exe add "HKLMSOFTWAREMicrosoft.NETFramework" /f  /v FastGcStress  /t REG_DWORD  /d 2

(我正在尝试这种方法.它会永远启动程序.我从注册表中删除了最后两个条目以使其工作,可能是方法本身出了问题.)

或者文章Access Violation in .NET 4 Runtime in gc_heap::garbage_collect with no unmanaged modules描述了另一种方法:

(DWORD) StressLog = 1  
(DWORD) LogFacility = 0xffffffff  
(DWORD) StressLogSize = 65536

哪种方式是正确的还是有另一种正确的方法?

我 searched GCStress on Koders.事实证明,最好的理解方法是查看 .NET’s source code:
enum  GCStressFlags {
    GCSTRESS_NONE               = 0,GCSTRESS_ALLOC              = 1,// GC on all allocations and 'easy' places
    GCSTRESS_TRANSITION         = 2,// GC on transitions to preemtive GC
    GCSTRESS_INSTR_JIT          = 4,// GC on every allowable JITed instruction
    GCSTRESS_INSTR_NGEN         = 8,// GC on every allowable NGEN instruction
    GCSTRESS_UNIQUE             = 16,// GC only on a unique stack trace
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读