PerfView GC触发器原因

Das*_*ave 4 c# garbage-collection

我一直在调查ac#server app中的一些垃圾收集问题.我目前正在使用PerfView来做到这一点.在收集了一些数据并获得了一些GC统计数据后,我对其中一个"触发原因"列感到困惑.我得到两个值'AllocLarge'和'AllocSmall'.我搜索了帮助和谷歌,但无法找到这两个术语到底意味着什么.

小智 10

.NET GC处理大于85K的对象(大对象)与其他对象(小对象)的处理方式截然不同.特别是大型物体仅在"第2代"(最昂贵的GC)中收集.'AllocLarge'表示在分配大型对象时触发了GC(因此必须激发Gen 2 GC).'AllocSmall'表示GC响应于"普通"对象的分配.

请注意,一般来说,短暂的大型物体是不好的(因为它们会导致昂贵的GC).您可以通过查看"GC Alloc Stats"视图并查找伪帧"LargeObject"来查看您分配大对象的所有位置.双击它(它会带您进入'调用者'视图,yoiu将看到您分配大对象的位置.