我制作了一个Windows Phone应用程序并面临内存问题。应用关闭因为它使用了太多内存。
我试图找到方法来弄清楚,正在使用多少内存,哪些变量消耗大部分内存等。 我做了内存分析,发现当使用应用程序2分钟时,它会消耗> 150 MB,因此关闭。
但是我无法知道哪个变量消耗内存。或者如果它的图像消耗内存。我有一个appviewmodel变量,我的猜测可能是太大但我想证实这一点。我怎样才能知道这个变量使用了多少内存?
答案 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)
我认为使用大图像可能是导致内存问题的常见原因之一。所以它处理图像。检查这些可能对您有帮助的链接。