System.OutOfMemoryException in Windows Phone 8

本文关键字:Phone Windows in OutOfMemoryException System | 更新日期: 2023-09-27 18:08:52

我正在创建一个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);                               
 }

System.OutOfMemoryException in Windows Phone 8

您假设它是"no memory"。这真的是"一块内存不够"。LOH碎片(大对象堆)是一个已知的问题。

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

:

new MemoryStream()

这是对数组的大量重新分配。将其初始化为数组的大小。

但更好:

以512kb的块移动数据,这样您就不会占用内存了。