gpt4 book ai didi

c# - Dot Net 字节分配中的内存不足异常

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:43 26 4
gpt4 key购买 nike

改写我的问题以使其符合主题:

我们有一个客户端(众多客户端中只有一个)一直在使用我们的软件获取内存不足异常。我觉得我们已经消除了可能导致这种情况的常见嫌疑人,并且正在寻找可能导致 OOM 的其他事情(不太标准的原因)的想法。具体来说,由于这似乎是针对单个客户的,是否可能是硬件、操作系统或 .Net 安装出现问题导致的?

以下是我所知道的会导致 OOM 的事情,以及为什么我认为我们已将它们排除在外:

1 - 系统内存不足导致的 OOM。为什么不?因为当这些异常发生时,系统有几个GB可用。

2 - 由于过度分配或内存泄漏导致进程耗尽内存而导致的 OOM。为什么不?因为在发生异常时该进程仅使用了大约 100MB 的内存。我们已经监控了几天的内存使用情况(在有问题的系统上),并且没有注意到内存使用情况有任何显着增加。

3 - 文件句柄等其他系统资源耗尽导致的OOM。为什么不?异常只发生在常规内存分配期间,而不是在打开文件或连接到套接字时。

4 - 尝试分配具有过多内存碎片的大型数组导致的 OOM。为什么不?我们分配的内存块相当小(大部分为 640x480x2)。有这么多可用内存,我很难相信它会如此零散以至于类似的事情会失败。

所以,为了清楚起见,我不是在问“为什么我的代码不运行?”我的代码确实在除一台以外的所有机器上运行。我没有要求任何人调试我的代码。我的问题是:“除了我们已经排除的那些之外,还有哪些其他可能的原因可能导致内存不足异常?”或者,“我是否遗漏了一些可能导致我过早消除已知原因之一的东西?”

最佳答案

作为任何遇到类似问题的人的引用资料。我想我们终于找到了这个错误的原因。事实证明,某些更便宜的板载 Intel 显卡上的 OpenGL 驱动程序在我们反复将位图数据写入相同纹理 ID 的方式上存在问题。我更改了代码以删除纹理并每次都分配一个新 ID,问题似乎已经消失。

关于c# - Dot Net 字节分配中的内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33634656/

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