C# 如何解决Windows Phone应用程序中的内存问题
我制作了一个Windows Phone应用程序,并且面临内存问题。应用程序关闭,因为它使用了太多内存 我试图找出一些方法来计算,使用了多少内存,哪些变量占用了最多内存,等等。 我做了内存分析,发现在2分钟内大力使用该应用程序时,它会消耗>150MB的内存,因此会关闭C# 如何解决Windows Phone应用程序中的内存问题,c#,silverlight,memory,windows-phone-8,C#,Silverlight,Memory,Windows Phone 8,我制作了一个Windows Phone应用程序,并且面临内存问题。应用程序关闭,因为它使用了太多内存 我试图找出一些方法来计算,使用了多少内存,哪些变量占用了最多内存,等等。 我做了内存分析,发现在2分钟内大力使用该应用程序时,它会消耗>150MB的内存,因此会关闭 但是,我无法知道哪个变量正在消耗内存。或者如果它的图像正在消耗内存。我有一个appviewmodel变量,我猜可能太大了,但我想确认一下。我怎样才能知道这个变量使用了多少内存 我认为使用大图像可能是导致内存问题的常见原因之一。因此,
但是,我无法知道哪个变量正在消耗内存。或者如果它的图像正在消耗内存。我有一个appviewmodel变量,我猜可能太大了,但我想确认一下。我怎样才能知道这个变量使用了多少内存 我认为使用大图像可能是导致内存问题的常见原因之一。因此,需要对图像进行处理。检查此链接,这可能对您有所帮助
大内存漏洞通常来自大文件或小数据的大循环。有了垃圾收集器,你实际上就不会再有内存漏洞了,但是因为GCs不会清理仍然在使用的变量,你仍然可以轻松地获得你的内存片段。多个对象的循环引用也可能发生这种情况 因此,您应该检查代码中未发布的对象的引用
一件事是,我的内存中有WindowsPhone8的位图内存泄漏。所以你应该像这样清理你的图像。我不确定这是否是我记得的东西。如果您是从.cs创建位图图像,请始终按如下方式解码像素高度/宽度:
BitmapImage bmp= new BitmapImage("ImageUrl");
bmp.DecodePixelHeight = 150;//image control size
bmp.DecodePixelWidth = 150;
这很重要 您必须了解对象存在的原因以及它们不应该存在的时间。