我正在创建一个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);
}
答案 0 :(得分:0)
你认为它是“无记忆”。它确实是“单片内存不足”。 LOH碎片(Large Object Heap)是一个已知问题。
加载这样的文件非常低效。
首先:
new MemoryStream()
这是数组重新分配的重要因素。事先将其初始化为数组的大小。
但更好:
以512kb的块移动数据,所以你不是这样的内存耗尽。无需立即将其全部加载到内存中。