内存不足异常

2024-05-04

我有一个非常占用内存的应用程序。它在一些大数组中保存了大量的数据。

我最近注意到偶尔出现 OutOfMemoryException。这些 OutOfMemoryExceptions 早在我的应用程序 (ASP.Net) 用完可用的 800mb 内存之前就发生了。 我已将问题追溯到调整数组大小的代码区域。该数组包含一个大小为 74 字节的结构。 (我知道您不应该创建大于 16 字节的结构),但此应用程序是来自 Vb6 应用程序的端口)。我尝试将结构更改为类,这似乎暂时解决了问题。

我认为更改为类解决问题的原因与以下事实有关:当使用结构体并且调整数组大小时,需要保留足够大的内存段来存储新数组(例如(currentArraySize) +increaseBySize)*74) 找不到。这会导致 OutOfMemoryException。

类的情况并非如此,因为数组的每个元素只需要 8 个字节来存储指向新对象的指针。

我的想法在这里正确吗?


您关于数组如何存储的假设是正确的。从结构更改为类将为每个实例增加一些开销,并且您将失去局部性的优势,因为所有数据都必须通过引用收集,但正如您所观察到的,它现在可能会解决您的内存问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内存不足异常 的相关文章

随机推荐