Windows Phone 8中的System.OutOfMemoryException

时间:2014-06-17 09:53:27

标签: c# windows-phone-8 out-of-memory

我正在创建一个Windows Phone 8应用程序,我有一个带有512 MB RAM的Windows Phone 8,当我在模拟器上运行该应用程序时,它运行得非常好,但当我检查Windows Phone 8设备时,我正在获取例外

System.OutOfMemoryException

当仍然有很多空闲记忆时。 请参阅下面的代码:

private IsolatedStorageFileStream isoVideoFile;
string isoVideoFileName = "Movie.mp4";

using (isoVideoFile = new IsolatedStorageFileStream(isoVideoFileName,
FileMode.OpenOrCreate, FileAccess.ReadWrite,
IsolatedStorageFile.GetUserStoreForApplication()))
{
   using (MemoryStream stream = new MemoryStream())
   {
     isoVideoFile.Write(stream.GetBuffer(), 0, (int)stream.Position);
   } 
     byte[] binaryData = new Byte[isoVideoFile.Length];

     long bytesRead = isoVideoFile.Read(binaryData, 0, (int)isoVideoFile.Length);
     string videofile = Convert.ToBase64String(binaryData, 0, binaryData.Length);                               
 }

1 个答案:

答案 0 :(得分:0)

你认为它是“无记忆”。它确实是“单片内存不足”。 LOH碎片(Large Object Heap)是一个已知问题。

加载这样的文件非常低效。

首先:

new MemoryStream()

这是数组重新分配的重要因素。事先将其初始化为数组的大小。

但更好:

以512kb的块移动数据,所以你不是这样的内存耗尽。无需立即将其全部加载到内存中。