我在C#中实现了一个使用大量自定义类型的复杂算法。
该算法的主要动作之一是在运行时动态创建新对象。
为了尽可能多地保存电话,我的目标是预先分配许多不同的电话。
我的算法将使用:
我已阅读(here)C#GC针对极快的分配进行了优化,但我知道GC在堆运行不足时开始收集。
如果我的算法会使堆低,GC将开始收集,但由于我的池将保留,因此该操作将暂时冻结应用程序并且可以影响性能。 我是否应该放弃使用池的想法并且每次都使用新分配的对象?
答案 0 :(得分:1)
.NET在分配对象方面非常快,你会发现有些东西可能是不可变的。它将收集并且如果您的代码引用了对象,它们将不会被收集并且将被推送到GEN,因此将更少检查。
代码分析工具将帮助您和一些代码示例将帮助我们。
这样可以很好地阅读