Tag: 不足

我如何使用MemoryFailPoint?

MemoryFailPoint (MSDN) “ 在执行操作之前检查足够的内存资源。” 但它是如何实际使用的呢? MemoryFailPoint是否为我创建的下一个大对象自动保留了一些内存? 或者它只是检查内存是否是免费的,而不是保留它? 它是否检查物理内存,物理内存加页面文件,虚拟地址空间或其他完全? 我什么时候处理它? 我是否需要在实际创建需要大量内存的对象之前部署MemoryFailPoint ,还是必须在部署MemoryFailPoint之前创建对象? 例如 try { using (MemoryFailPoint mem = new MemoryFailPoint(500)) { // allocate big object here? } } catch (InsufficientMemoryException e) { // … } // or allocate big object here? // or allocate big object on another thread? 同一进程中的另一个线程是否可以窃取我用MemoryFailPoint保留的内存,或者MemoryFailPoint是否为当前线程专门保留内存? 如果没有丢弃MemoryFailPoint会发生什么? 一个不相关的MemoryFailPoint本身会消耗大量内存吗?

FileStream.Write()抛出OutOfMemoryException的可能原因?

我有10个线程将数千个小缓冲区(每个16-30个字节)写入随机位置的大文件中。 一些线程在FileStream.Write()opreation上抛出OutOfMemoryException。 导致OutOfMemoryException的原因是什么? 要找什么? 我正在使用像这样的FileStream(对于每个书面项目 – 此代码从10个不同的线程运行): using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite, BigBufferSizeInBytes, FileOptions.SequentialScan)) { … fs.Write(); } 我怀疑在FileStream中分配的所有缓冲区都不会被GC及时释放。 我不明白为什么CLR而不是抛出不只是运行GC循环并释放所有未使用的缓冲区?

内存优化OrderBy和Take?

我有9 GB的数据,我只想要10行。 当我做: data.OrderBy(datum => datum.Column1) .Take(10) .ToArray(); 我得到一个OutOfMemoryException 。 我想使用OrderByAndTake方法,针对较低的内存消耗进行了优化。 这很容易写,但我猜有人已经这样做了。 我在哪里可以找到它。 编辑 :这是Linq-to-objects。 数据来自文件。 如果Column1值小于10个最大值的当前列表,则可以丢弃每一行。

加载图像时出现WP8 Out of Memory错误

我正在使用Windows Phone 8应用程序。 我正在研究Coverflowfunction,我正在尝试加载600项,但它总是显示Out of Memory Error 码: 我已经尝试检查它发生的原因,因为每次使用下面的代码加载图像 我尝试删除Width和Height ,它的工作原理,但我希望图像更大。 我怎样才能解决这个问题 ?

创建大量对象时内存不足C#

我正在处理我的应用程序中的100万条记录,这是从MySQL数据库中检索的。 为此,我使用Linq获取记录并使用.Skip()和.Take()一次处理250条记录。 对于每个检索到的记录,我需要创建0到4个项目,然后将其添加到数据库中。 因此,必须创建的平均项目总数约为200万。 IQueryable objectCollection = dataContext.Repository(); int amountToSkip = 0; IList objects = objectCollection.Skip(amountToSkip).Take(250).ToList(); while (objects.Count != 0) { using (dataContext = new LinqToSqlContext(new DataContext())) { foreach (Object objectRecord in objects) { // Create 0 – 4 Random Items for (int i = 0; i < Random.Next(0, 4); i++) { Item item = […]

当我读取500MB FileStream时OutOfMemoryException

我正在使用Filestream读取大文件(> 500 MB),我得到了OutOfMemoryException。 任何解决方案。 我的代码是: using (var fs3 = new FileStream(filePath2, FileMode.Open, FileAccess.Read)) { byte[] b2 = ReadFully(fs3, 1024); } public static byte[] ReadFully(Stream stream, int initialLength) { // If we’ve been passed an unhelpful initial length, just // use 32K. if (initialLength 0) { read += chunk; // If we’ve reached the end of […]