我需要一个能够顺利运行的应用程序。我有很多串行计算需要在短时间内连续执行,所以我不介意GC做它的工作,我甚至可以采取更频繁的集合,但我需要最小化每个GC集合的长度。
我希望(如果可能的话)由于GC每次都有1毫秒的线程活动暂停。
在.NET中实现这一目标的最佳方法是什么(我知道.NET不是针对此类需求的技术,但如果能够满足我的需求,则可以节省开发时间和未来规格的灵活性,这对于尝试一下)?
答案 0 :(得分:0)
从MSDN页面直接: https://msdn.microsoft.com/en-us/library/ms973837.aspx
正如罗恩在评论中提到的那样。如果你想要对GC进行大量控制,你必须更加聪明地使用.NET。.NET垃圾收集器提供高速分配服务 充分利用记忆,没有长期的碎片问题, 然而,有可能做的事情会给你带来的不足 最佳表现。为了充分利用分配器,你应该做到 考虑以下做法:
同时分配要与给定数据结构一起使用的所有内存(或尽可能多的内存)。删除临时分配 这可以避免复杂的惩罚。
最大限度地减少对象指针的写入次数,尤其是对旧对象的写入次数。
降低数据结构中指针的密度。
限制使用终结器,然后尽可能仅使用“叶子”对象。如有必要,请中断对象以帮助解决此问题。
使用Allocation Profiler等工具审核关键数据结构和执行内存使用情况配置文件的常规做法 将大大有助于保持你的记忆力使用有效 垃圾收集器最适合你。