gpt4 book ai didi

c# - 渐进式 GC 调用

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:59 25 4
gpt4 key购买 nike

有没有一种有效的方法可以将数组的部分内存返回给系统?我正在使用 C# 遍历一个大字符串数组和一个包含(>100k 元素)的哈希表,并在完成后将各个元素设置为 null。我已经尝试在各个级别和整个循环中调用垃圾收集器,但它们都没有将内存返回给系统(对垃圾收集器的完整调用并等待挂起的终结器会导致我的代码变得极其缓慢且无响应)。
我考虑过将数组拆分为 n 个部分并在每个部分完成后调用 gc 但这看起来很乱

GC.Collect(1);
GC.Collect(2);
....
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

最佳答案

让垃圾收集器做它的事情。最有效的方法正是 GC 已经在做的事情:将收集推迟到真正必须完成的时候。这样它就不必执行不必要的更多收集,并且所有内存回收工作可以一起批处理到相对较少的收集调用中,因此它不必比必要更频繁地遍历对象图。

只需确保清除对该对象的任何引用,这样您就不会意外地使它的存活时间超过必要的时间,但只要您这样做了,您就不需要做任何其他事情。

关于c# - 渐进式 GC 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080197/

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