gpt4 book ai didi

c# - 垃圾收集运行得太晚 - 导致 OutOfMemory 异常

转载 作者:行者123 更新时间:2023-11-30 12:30:30 26 4
gpt4 key购买 nike

想知道是否有人可以阐明这一点。

我有一个内存占用量很大(和内存流失)的应用程序。没有任何内存泄漏,GC 往往会很好地释放资源。

然而,有时 GC 不会“按时”发生,从而导致内存不足异常。我想知道是否有人可以阐明这一点?

我使用了 REDGate 分析器,它非常好 - 应用程序具有典型的“锯齿”模式 - OOM 发生在锯齿的顶部。不幸的是,分析器不能用于 (AFAIK) 识别内存流失的来源。

是否可以设置内存“软限制”,在该限制下应强制执行 GC?目前,只有当内存达到其绝对限制时才会执行 GC,从而导致 OOM。

最佳答案

垃圾回收“不及时发生”真的不可能。当新的内存分配将 Gen-0 推到某个极限时,它们就会发生。因此,它们总是在内存分配将内存推到其限制之前发生。这种情况每天在世界各地发生很多次,如果有任何错误不为人所知,我会感到惊讶。

您是否考虑过您实际上可能分配了比可用内存更多的内存?该操作系统仅允许您在大多数 32 位计算机上访问 2GB。

还有一些其他的可能性:

  1. 您的应用程序是否使用非托管内存?
  2. 您的应用程序是否正在固定任何内存?如果是这样,可能会导致碎片化问题,尤其是在您不释放 pin 的情况下。

关于c# - 垃圾收集运行得太晚 - 导致 OutOfMemory 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923073/

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