【问题标题】:How to solve memory issues in Windows Phone App如何解决 Windows Phone App 中的内存问题
【发布时间】:2016-04-29 10:29:33
【问题描述】:

我制作了一个 Windows Phone 应用程序,但遇到了内存问题。应用程序因使用过多内存而关闭。

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

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

【问题讨论】:

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


【解决方案1】:

大内存漏洞通常来自大文件或小数据的大循环。使用垃圾收集器,您实际上不会再出现内存漏洞,但由于 GC 不会清理仍在使用的变量,您仍然可以轻松获得内存片段。这也可能发生在多个对象的循环引用中。

因此,您应该检查您的代码是否引用了您未发布的对象。

有一件事是,我在内存中发现 Windows Phone 8 存在位图内存泄漏。所以你应该像questions 那样清理你的图像。我不确定,如果这是我记得的事情。

【讨论】:

    【解决方案2】:

    如果您从 .cs 创建 BitmapImage 总是像这样解码像素高度/宽度:

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

    这很重要!

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-07
        • 2015-11-13
        • 2019-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 1970-01-01
        • 2012-05-23
        相关资源
        最近更新 更多