Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解决Windows Phone应用程序中的内存问题_C#_Silverlight_Memory_Windows Phone 8 - Fatal编程技术网

C# 如何解决Windows Phone应用程序中的内存问题

C# 如何解决Windows Phone应用程序中的内存问题,c#,silverlight,memory,windows-phone-8,C#,Silverlight,Memory,Windows Phone 8,我制作了一个Windows Phone应用程序,并且面临内存问题。应用程序关闭,因为它使用了太多内存 我试图找出一些方法来计算,使用了多少内存,哪些变量占用了最多内存,等等。 我做了内存分析,发现在2分钟内大力使用该应用程序时,它会消耗>150MB的内存,因此会关闭 但是,我无法知道哪个变量正在消耗内存。或者如果它的图像正在消耗内存。我有一个appviewmodel变量,我猜可能太大了,但我想确认一下。我怎样才能知道这个变量使用了多少内存 我认为使用大图像可能是导致内存问题的常见原因之一。因此,

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

我试图找出一些方法来计算,使用了多少内存,哪些变量占用了最多内存,等等。 我做了内存分析,发现在2分钟内大力使用该应用程序时,它会消耗>150MB的内存,因此会关闭


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

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


  • 大内存漏洞通常来自大文件或小数据的大循环。有了垃圾收集器,你实际上就不会再有内存漏洞了,但是因为GCs不会清理仍然在使用的变量,你仍然可以轻松地获得你的内存片段。多个对象的循环引用也可能发生这种情况

    因此,您应该检查代码中未发布的对象的引用


    一件事是,我的内存中有WindowsPhone8的位图内存泄漏。所以你应该像这样清理你的图像。我不确定这是否是我记得的东西。

    如果您是从.cs创建位图图像,请始终按如下方式解码像素高度/宽度:

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

    这很重要

    您必须了解对象存在的原因以及它们不应该存在的时间。