c# - PerfView GC 触发原因

标签 c# garbage-collection

我一直在调查 C# 服务器应用程序中的一些垃圾收集问题。我目前正在使用 PerfView 来执行此操作。在收集了一些数据并获取了大量 GC 统计数据后,我对其中一列“触发原因”有点困惑。我得到两个值“AllocLarge”和“AllocSmall”。我搜索了帮助和谷歌,但找不到这两个术语的确切含义。

最佳答案

.NET GC 处理大于 85K 的对象(大对象)与其他对象(小对象)有很大不同。特别是大型对象仅在“第二代”(最昂贵的 GC 类型)中收集。 “AllocLarge”表示在分配大对象时触发了 GC(因此必定引发了 Gen 2 GC)。 “AllocSmall”表示 GC 发生是为了响应“普通”对象的分配。

请注意,一般来说,拥有短命的大型对象是不好的(因为它们会强制执行昂贵的 GC)。通过查看“GC Alloc Stats” View 并查找伪帧“LargeObject”,您可以在任何地方看到分配大对象的情况。双击它(这会将您带到“调用者” View ,并且 yoiu 将看到您在哪里分配大对象。

关于c# - PerfView GC 触发原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911323/

相关文章:

Java 1.6内存泄漏: HashMap and ArrayList

c# - 不支持返回类型 'System.String'。参数名称: expression MVC Enum

c# - 是否可以使用工厂方法使用流利的 nhibernate 创建类的实例?

c# - 在 session 中存储登录名和密码哈希是否安全?

c# - 内部范围内嵌套引用类型对象对垃圾回收没有影响 : True or False?

javascript - ES6 const 会影响垃圾回收吗?

python - 为什么此 python 代码中的内存使用量增加?

c# - 添加应用程序 list 以确保跨 Windows XP、Vista 和 7 提升权限的可靠性如何?

c# - 有什么方法可以阻止光线转换穿过物体吗?

java - 网络爬虫耗尽堆空间