我有一个关于一些无望的内存问题的其他活跃问题,这些问题可能涉及 LOH 碎片以及可能的其他未知数。
我现在的问题是,公认的做事方式是什么?如果我的应用程序需要在 Visual C# 中完成,并且需要处理 int[4000000] 的大数组,我怎么能不被垃圾收集器拒绝处理 LOH 所注定呢?
似乎我被迫将任何大型数组设为全局,并且永远不要在其中任何一个周围使用“新”这个词。所以,我留下了带有“maxindex”变量的不优雅的全局数组,而不是由函数传递的大小整齐的数组。
我一直被告知这是不好的做法。有什么选择?
是否有某种功能System.GC.CollectLOH("Seriously")
?有没有办法将垃圾收集外包给 System.GC 以外的东西?
无论如何,处理大型(> 85Kb)变量的普遍接受的规则是什么?