如何最小化GC集合的长度?

时间:2015-07-08 15:01:39

标签: c# garbage-collection

我需要一个能够顺利运行的应用程序。我有很多串行计算需要在短时间内连续执行,所以我不介意GC做它的工作,我甚至可以采取更频繁的集合,但我需要最小化每个GC集合的长度。

我希望(如果可能的话)由于GC每次都有1毫秒的线程活动暂停。

在.NET中实现这一目标的最佳方法是什么(我知道.NET不是针对此类需求的技术,但如果能够满足我的需求,则可以节省开发时间和未来规格的灵活性,这对于尝试一下)?

1 个答案:

答案 0 :(得分:0)

从MSDN页面直接: https://msdn.microsoft.com/en-us/library/ms973837.aspx

  

.NET垃圾收集器提供高速分配服务   充分利用记忆,没有长期的碎片问题,   然而,有可能做的事情会给你带来的不足   最佳表现。为了充分利用分配器,你应该做到   考虑以下做法:

     
      
  • 同时分配要与给定数据结构一起使用的所有内存(或尽可能多的内存)。删除临时分配   这可以避免复杂的惩罚。

  •   
  • 最大限度地减少对象指针的写入次数,尤其是对旧对象的写入次数。

  •   
  • 降低数据结构中指针的密度。

  •   
  • 限制使用终结器,然后尽可能仅使用“叶子”对象。如有必要,请中断对象以帮助解决此问题。

  •   
  • 使用Allocation Profiler等工具审核关键数据结构和执行内存使用情况配置文件的常规做法   将大大有助于保持你的记忆力使用有效   垃圾收集器最适合你。

  •   
正如罗恩在评论中提到的那样。如果你想要对GC进行大量控制,你必须更加聪明地使用.NET。