如何解决Windows Phone App中的内存问题

时间:2016-04-29 10:29:33

标签: c# silverlight memory windows-phone-8

我制作了一个Windows Phone应用程序并面临内存问题。应用关闭因为它使用了太多内存。

我试图找到方法来弄清楚,正在使用多少内存,哪些变量消耗大部分内存等。 我做了内存分析,发现当使用应用程序2分钟时,它会消耗> 150 MB,因此关闭。

但是我无法知道哪个变量消耗内存。或者如果它的图像消耗内存。我有一个appviewmodel变量,我的猜测可能是太大但我想证实这一点。我怎样才能知道这个变量使用了多少内存?

3 个答案:

答案 0 :(得分:2)

大内存漏洞通常来自大文件或小数据的大循环。使用垃圾收集器,您实际上不再有内存漏洞,但由于GC不清除仍在使用的变量,您仍然可以轻松获取内存镜头。对于多个对象的循环引用也可能发生这种情况。

因此,您应检查代码以查找未发布的对象的引用。

有一点是,我在内存中有Windows Phone 8的位图内存泄漏。因此,您应该像在questions中一样清理图像。我不确定,如果这是我记得的事情。

答案 1 :(得分:1)

如果要从.cs创建BitmapImage,请像这样解码像素高度/宽度:

BitmapImage bmp= new BitmapImage("ImageUrl");
bmp.DecodePixelHeight = 150;//image control size
bmp.DecodePixelWidth = 150;

它有所不同!。

答案 2 :(得分:0)

我认为使用大图像可能是导致内存问题的常见原因之一。所以它处理图像。检查这些可能对您有帮助的链接。

  1. Why do I get an OutOfMemoryException when I have images in my ListBox?
  2. System.OutOfMemoryException was unhandled