gpt4 book ai didi

.net - 如何提高垃圾收集性能?

转载 作者:行者123 更新时间:2023-12-02 21:01:59 26 4
gpt4 key购买 nike

什么样的优化模式可以用来提高垃圾收集器的性能?

我问这个问题的原因是我使用 Compact Framework 制作了很多嵌入式软件。在慢速设备上,垃圾收集可能会成为一个问题,我想减少垃圾收集器启动的次数,当它启动时,我希望它更快地完成。我还发现,使用垃圾收集器而不是反对它可以帮助改进任何 .NET 或 Java 应用程序,尤其是重型 Web 应用程序。

这是我的一些想法,但我没有做过任何基准测试。

  • 重用临时类/数组(减少分配计数)
  • 将事件对象的数量保持在最低限度(更快的收集)
  • 尝试使用结构而不是类

最佳答案

关键是要了解 CF GC 如何进行分配。它是一个简单的标记和清除、非分代 GC,具有特定的算法来确定什么会触发 GC,以及什么会在收集后导致压缩和/或倾斜。在应用程序级别您几乎无法控制 GC(唯一可用的方法是 Collect,并且它的使用非常有限,因为您无论如何都无法强制压缩)。

对象重用是一个好的开始,但简单地保持较低的对象数量可能是最好的工具之一,因为任何收集操作都必须遍历所有根。保持较短的步行时间是个好主意。如果压缩让你丧命,那么防止段碎片将会有所帮助。 >64k 的对象在这方面可能会有所帮助,因为它们有自己的段,并且与较小的对象相比,它们的处理方式有所不同。

要真正了解 CF GC 的工作原理,我建议观看 MSDN Webcast on CF memory management .

关于.net - 如何提高垃圾收集性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com