繁体   English   中英

C#关于内存不足的困惑

[英]C# Confusion about out of memory

我一直在阅读有关内存不足的信息,我发现在大多数情况下,内存不足异常(至少在.NET中)实际上并不是由于系统实际耗尽内存而是系统无法分配块因碎片而请求的内存块。

我真的不明白的是,即使我尝试在应用程序启动时分配大量连续内存(例如:加载100张图像),我仍处于内存不足的情况。 由于应用程序刚刚启动,因此假设在此之前没有进行太多的分配/解除分配,因此应该有许多可用的空闲连续块。 在那种情况下,为什么应用程序仍会受到内存碎片问题的影响?

请注意,我也非常确定该问题不是由系统实际耗尽为我的应用程序分配的内存配额引起的,因为在我的特定情况下加载100个图像只需要大约200 MB左右。

根据我的经验,Out of Memory主要意味着糟糕的对象管理。 这是太快创建太多对象的症状,GC很难跟上。 通过缓存和明确定义的对象生命周期,可以防止少数项目占用并且永远不会使内存恢复(如SQL Server)内存不足。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM