J2ME移动软件程序设计第7章

时间:2025-05-26

J2ME移动软件程序设计

第7章J2ME应用程序的性能优化

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计知识点: 代码优化的一些基准 优化内存使用 优化代码运行速度 优化用户界面 合理地打包应用程序 J2ME的程序兼容性

本章导读:本章主要介绍如何优化一个J2ME程序的性能。对 J2ME中字符串编程、用户界面编程、MIDlet打包和加密 等工作进行了详细讨论,并对如何提高性能给出了切实可 行的方法。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计 7.1 代码优化的一些基准7.1.1 代码优化基准概述 在J2SE(Java 2的标准版)中,可以提供许多工具来对 代码性能、代码运行瓶颈、内存使用情况等进行检测。 J2ME 中不存在这些工具,需要使用一些传统的方法来 测试和优化代码。 在MIDP的API中提供了几种对测试和优化代码很有用的 方法。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.1.2 内存测试基准 使用http://www.77cn.com.cnng.Runtime中所提供的两种方法 public long freeMemory();给出当前有多少字节的剩 余内存可以使用。 public long totalmemory();给出在当前运行环境中总 共的存储器大小。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计 例:查明一个对象到底需要使用多少内存(变量size中 ) Runtime runtime =Runtime.getRuntime(); long before,after; System.gc(); before =runtime.freeMemory(); Object newObject =new String(); after =runtime.freeMemory(); long size =before -after;

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.1.3 时间测试基准 采用传统的方式测试运行速度 long start,finish; start =System.currentTimeMillis(); someMethod(); finish =System.currentTimeMillis();

long duration =finish -start;

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计 7.2 优化内存使用7.2.1 优化内存概述 在J2ME环境中内存总是稀缺的 内存分配和垃圾收集器的运行将可能使应用程序的运行 速度变慢 在J2ME环境中小心使用内存

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.2.2 创建和删除对象 每当创建一个新对象时,内存将被重新分配,而分配内 存将花费很多时间。 在一个循环体开始处创建的对象,有可能在循环体的尾 部被释放。这就意味着,每一次循环体的执行就将激发 系统运行一次垃圾收集器,这样将导致循环体的执行速 度与垃圾收集器的运行速度差不多。 解决方法:将对象的创建从循环体内放在循环体外。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.2.3 字符串和字符串缓存 使用“+”操作符连接两个字符串时,有可能导致新的字 符串对象的创建,而新字符串对象的创建又将触发内存 管理工作 解决方法:放弃使用字符串和字符串缓存,

而使用字符 数组。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.2.4 正确处理内存不足 当一个对象被创建时,如果发生内存不足的错误, MIDlet将抛出http://www.77cn.com.cnng.OutOfMemoryError异常。 解决方法:使用 try/catch 来拦截异常,并当异常出现时 给用户合理的解释。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计 7.3 优化代码运行速度7.3.1 优化循环 一切可以在循环体外部预先计算好的值都不应该放到循 环体内部计算。 例:避免在循环体中对v.size() 的重复调用 优化前 for (int i =0;i <v.size();i++){ Object o =v.elementAt(i); //处理对象o } int size =v.size(); for (int i =0;i <size;i++){ Object o =v.elementAt(i); //处理对象o }

优化后

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.3.2 使用数组代替对象 矢量和哈希表既简单又方便,但它们会增加大量的系统 开销。 数组通常比集合类运行得更快、更可靠。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.3.3 使用缓存I/O 应该尽量避免从数据流中读写一个字节。 尽量使用带有缓冲的流读写方法。 BufferedReader和BufferedWriter两个类可以提供内置的 缓冲 I/O 功能,但在J2ME中没有提供这两个类,因此如 果要提高I/O效率,就应该自己设计符合要求的带有缓冲

的I/O方式。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.3.4 主动清理内存 一旦不再使用所用内存,就应该立即释放,以提高应用 程序的性能。 如果有数组不再使用了,设置数组指向 null ,使数组能 被垃圾收集器收集。 如果程序需要马上进行内存垃圾搜集工作,显式地调用 System.gc()方法来实现。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计7.4 优化用户界面 在台式计算机上能很快执行完毕的程序,在移动电话上 都可能需要很长的时间才执行完。 MIDlet 的界面设计必须能让用户感到程序在运行,而不 是长时间没有任何反应的等待。 在程序执行需要较长时间的地方加入一些进度指示器 (例如标尺),这样用户才能够知道程序在执行需要大 量时间的运算。 在MIDlet 的界面设计中,基本的准则是:简单明了、使

用快捷、响应及时和信息丰富。

china_54@http://www.77cn.com.cn

J2ME移动软件程序设计 7.5 合理地打包应用程序 仅仅打包使用的代码 使用代码加密保护程序

china_54@http://www.77cn.com.cn

…… 此处隐藏:857字,全部文档内容请下载后查看。喜欢就下载吧 ……
J2ME移动软件程序设计第7章.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219