`
h416756139
  • 浏览: 365838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于WP7中的90M内存限制问题及设计原则

    博客分类:
  • WP7
 
阅读更多

一. 在wp7中,程序所使用内存不能超过90M, 否则会自动退出

二. 如果一个page没有被释放,那么它所包含的所有控件资源都不会被垃圾收集.

     在wp7中操作图像资源是很费内存的,如果内存超过90M,你的程序就挂了,而我们在XAML文件中定义的Image控件,由于属于静态资源,所以你不可能在后台CS代码中对它们进行image.source = null 操作,我试过,没有用,除非你把Image控件的定义放在CS代码中,这样你执行image.source = null 操作或者将Image控件从LayoutRoot中卸掉:LayoutRoot.Children.Remove(Image), 那么这个image就会被垃圾收集。

因此,对于在XAML文件中定义的图像控件来说,要想释放这些图像所占用的内存,唯一时刻只能是离开这个Page的时刻。所以,一条重要原则就是尽量不要将一个包含大量图像控件的page作为你的MainPage,因为这个Page会等到整个程序结束(exit)的时候才会被释放,你想想,在整个程序运行过程中,这些内存一直被占用着,一旦你再开一个包括许多图像的page,或者你load了其他东西到内存里,你的内存使用很可能会超过90M。

所以建议就是:

  1.如果程序有主界面的话,尽量不要在主界面上放太多图像控件。或者说不要将一个拥有大量图像的page作为main page。

  2.尽可能将需要播放动画并包含大量图像的page单独做成一个page,播放完毕或者用完就离开这个page

  3.Panorama 的background 如果设置成图像image的话,会消耗大量内存,一般24M左右,而且跟是否是jpg或png, 跟图像大小和复杂度也没关系, 我做过试验,唯一能降低内存消耗的方法是讲panorama的高度(height)减小,比如减小一般,那么内存消耗也会减小一般,因为它只绘制了一半在界面上嘛。

   你可能会想到将panorama的背景设置成渐变,我试过,这样也会消耗17M内存。如果设置成单色(solid color brush),大约消耗2-3M左右。 唯一不会消耗内存的就是:no background.

   因此,请在选用Panorama之前,好好检查一下你的程序当前已经消耗了多少内存。余下的内存还够不够你load 一个panorama大胃王。

  4.听说Pivot也是个让人又爱又恨的东西,在你加了很多tab到一个pivot中,而且图像又太多时,它也可能挂。 不过具体情况我还没试,以后再说。

 

另外,附送一段代码,让你知道在WP7中,如何让你知道每个Page何时被释放?

        #if(DEBUG)
        /// <summary>
        /// Add a finalizer to check for memory leaks
        /// </summary>
        ~YourPage()
        {
            System.Diagnostics.Debug.WriteLine("Finalizing " + this.GetType().FullName);
        }
        #endif

你可以将这段代码添加到你的每一个page中,记得修改这个析构函数的名称哦。 那么当这个page被析构的时候,就会在output控制台里看到。

 

看来很多同学都想知道为什么会有这个限制,那么我就补充一下吧:

这是因为Windows Phone 7的应用程序认证要求规定的,5.2.5规定,任何应用程序不得使用超过90 MB的内存,除非手机的可用内存超过256 MB。

下面是英文详细说明:

5.2.5 Memory Consumption
An application must not exceed 90 MB of RAM usage, except on devices that have more than 256 MB of memory. You can use the DeviceExtendedProperties class to query the amount of memory that is available on the device and modify the application behavior at runtime to take advantage of additional memory. For more information, see the DeviceExtendedProperties class in MSDN.
The DeviceTotalMemory value returned by DeviceExtendedProperties indicates the physical RAM size in bytes. This value is less than the actual amount of device memory. For an application to pass certification, Microsoft recommends that the value returned by ApplicationPeakMemoryUsage is less than 90 MB when the DeviceTotalMemory is less than or equal to 256 MB.

所以说这个脑残的规定实际上是防止你的程序无限制的使用内存从而拖慢整个系统的运行,包括多个程序之间的切换,微软这次就是想让windows phone 7的用户体验更加流畅,由于目前推出的所有型号的wp7手机的RAM都是256MB, 因此如果以后出的手机RAM增加了,可能就不会有这个限制了。

分享到:
评论

相关推荐

    WP7交互特性浅析及APP设计探究

    ### WP7交互特性浅析及APP设计探究 #### 涅磐重生的WP7(以及它的历史简介) ##### WP7的起源与转型 **Windows Phone 7 (WP7)** 是微软在移动操作系统领域的一次大胆尝试,标志着从Windows Mobile时代到Windows ...

    wp7样式代码

    7.Metro设计原则:理解WP7的 Metro 设计语言,包括平面设计、无装饰、清晰的排版、以及对色彩和空间的敏感运用,是创建符合平台规范样式的前提。 通过深入学习和实践这些知识点,开发者能够创建出美观且符合Windows...

    刷机工具wp7

    在WP7系统中,为了提升设备性能、解决软件问题或安装特定版本的系统,用户有时需要对手机进行“刷机”,即更新或更换手机的操作系统。针对你提到的三星I8350(也称为Samsung Omnia W或Samsung Wave W),这是一款...

    WP7查询IP所在地

    在实现过程中,注意遵守WP7的UI设计原则,保持界面简洁清晰,同时遵循良好的编程实践,确保代码可读性和维护性。此外,考虑到WP7的硬件限制和电池寿命,要优化网络请求和数据处理,避免不必要的资源消耗。 总结来说...

    C# Sqlite For WP7

    在WP7中,需要注意的是,由于系统沙盒的限制,数据库文件通常会被存储在应用程序的本地存储区域。因此,数据库文件路径应根据`IsolatedStorage`的相关规则来确定。 此外,为了确保数据的持久性和安全性,开发者需要...

    wp7工具集wp7工具集

    标题"wp7工具集wp7工具集"表明这是一组针对Windows Phone 7(WP7)平台的开发和管理工具。这个集合可能包含了多种实用工具,帮助开发者和用户更好地理解和操作WP7设备。 描述中提到了几个具体的工具: 1. **xap12...

    WP7-HelloPhone

    通过深入研究"WP7-HelloPhone"这个示例,开发者可以逐步掌握WP7应用的基础架构、设计原则以及开发流程。此外,这只是一个起点,随着对平台理解的加深,开发者还可以探索更复杂的功能,如访问硬件API、数据存储、网络...

    WP7-我的时钟应用

    在开发过程中,开发者必须遵循WP7的开发规范,确保应用兼容不同的设备和系统版本,并且优化性能以降低内存占用和提高响应速度。他们还需要考虑用户界面的设计原则,确保应用界面清晰易用,符合Windows Phone的...

    wp7手机 usb

    总的来说,"wp7手机 usb"这个主题涵盖了Windows Phone 7系统中关于USB存储的使用和管理,特别是通过工具如"Wp7UsbStorageEnabler.exe"来实现手机模拟U盘的功能。这个功能增强了WP7设备的实用性,使其在文件共享和...

    WP7 Update Cab Sender

    **WP7 Update Cab Sender** 是一个专为Windows Phone 7设备设计的离线推送升级工具。这个工具的主要目的是帮助用户在没有互联网连接或者网络环境不稳定的情况下,为他们的WP7设备安装系统更新或应用升级包。它通过...

    HD2直刷WP7系统教程及详细说明

    ### HD2直刷WP7系统教程及详细说明 #### 前言 随着技术的发展,智能手机用户对于设备的个性化需求日益增长。对于那些热衷于探索不同操作系统可能性的极客们来说,能够在一个硬件平台上尝试多种系统无疑是一大乐事。...

    wp7应用软件安装

    在本文中,我们将深入探讨如何在Windows Phone 7 (WP7)设备上安装应用软件,这一过程涉及到多个软件的安装和设置。以下是详细的步骤指南: 首先,为了在WP7设备上安装应用,你需要确保拥有以下软件: 1. **Windows...

    WP8/WP7模拟器、真机内存查看工具

    学习windows phone开发必不可少的工具,可用它查看对内存的查看,以及从内存导出文件……

    wp7官方教程(附带实例源码)

    对于WP7的UI设计,教程中的“了解wp7网页浏览器控件”分为两部分(第7章和第6章),这部分内容涵盖了WebBrowser控件的使用,它是许多应用中用于显示网页内容的工具,开发者将学习如何嵌入网页、交互操作以及优化用户...

    wp7商店发布流程

    ### wp7商店发布流程 #### 一、概述 随着Windows Phone 7(简称WP7)平台的推出,开发者有了一个新的舞台来展示他们的创意和技术能力。...以上就是关于WP7应用发布流程的详细介绍,希望能对广大开发者有所帮助。

    WP7 codeproject app .zip

    5. **MVVM模式**:在WP7开发中,Model-View-ViewModel (MVVM) 设计模式常见,有助于分离用户界面和业务逻辑。 6. **Visual Studio IDE**:项目文件可能是Visual Studio解决方案,因此开发者需要熟悉IDE的基本操作,...

    WP7小计算器

    Windows Phone 7(简称WP7)是由微软开发的一款智能手机操作系统,其界面设计风格独特,以“动态磁贴”为特点,提供了丰富的应用生态。"WP7小计算器"是一款专为此平台设计的基础计算工具,旨在帮助用户进行日常数学...

    开源中国WP7版源码

    开源中国WP7版源码是针对Windows Phone 7平台开发的一款应用程序,它的源代码完全开放,可供开发者学习、研究和贡献。开源中国的这个版本旨在为WP7用户提供一个方便的社区互动平台,包括浏览新闻、参与讨论、查看...

Global site tag (gtag.js) - Google Analytics