《J2ME移动软件程序设计》-卢军-电子教案 第7章

上传人:E**** 文档编号:89401088 上传时间:2019-05-24 格式:PPT 页数:17 大小:261.50KB
返回 下载 相关 举报
《J2ME移动软件程序设计》-卢军-电子教案 第7章_第1页
第1页 / 共17页
《J2ME移动软件程序设计》-卢军-电子教案 第7章_第2页
第2页 / 共17页
《J2ME移动软件程序设计》-卢军-电子教案 第7章_第3页
第3页 / 共17页
《J2ME移动软件程序设计》-卢军-电子教案 第7章_第4页
第4页 / 共17页
《J2ME移动软件程序设计》-卢军-电子教案 第7章_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《《J2ME移动软件程序设计》-卢军-电子教案 第7章》由会员分享,可在线阅读,更多相关《《J2ME移动软件程序设计》-卢军-电子教案 第7章(17页珍藏版)》请在金锄头文库上搜索。

1、第7章 J2ME应用程序的性能优化,J2ME移动软件程序设计,知识点: 代码优化的一些基准 优化内存使用 优化代码运行速度 优化用户界面 合理地打包应用程序 J2ME的程序兼容性 本章导读: 本章主要介绍如何优化一个J2ME程序的性能。对J2ME中字符串编程、用户界面编程、MIDlet打包和加密等工作进行了详细讨论,并对如何提高性能给出了切实可行的方法。,J2ME移动软件程序设计,7.1.1 代码优化基准概述,7.1 代码优化的一些基准,在J2SE(Java 2的标准版)中,可以提供许多工具来对代码性能、代码运行瓶颈、内存使用情况等进行检测。 J2ME中不存在这些工具,需要使用一些传统的方法来

2、测试和优化代码。 在MIDP的API中提供了几种对测试和优化代码很有用的方法。,J2ME移动软件程序设计,7.1.2 内存测试基准,使用java.lang.Runtime中所提供的两种方法 public long freeMemory();给出当前有多少字节的剩余内存可以使用。 public long totalmemory();给出在当前运行环境中总共的存储器大小。,J2ME移动软件程序设计,例:查明一个对象到底需要使用多少内存(变量size中 ) Runtime runtime =Runtime.getRuntime(); long before,after; System.gc(); b

3、efore =runtime.freeMemory(); Object newObject =new String(); after =runtime.freeMemory(); long size =before -after;,J2ME移动软件程序设计,7.1.3 时间测试基准,采用传统的方式测试运行速度 long start,finish; start =System.currentTimeMillis(); someMethod(); finish =System.currentTimeMillis(); long duration =finish -start;,J2ME移动软件程序

4、设计,7.2.1 优化内存概述,7.2 优化内存使用,在J2ME环境中内存总是稀缺的 内存分配和垃圾收集器的运行将可能使应用程序的运行速度变慢 在J2ME环境中小心使用内存,J2ME移动软件程序设计,7.2.2 创建和删除对象,每当创建一个新对象时,内存将被重新分配,而分配内存将花费很多时间。 在一个循环体开始处创建的对象,有可能在循环体的尾部被释放。这就意味着,每一次循环体的执行就将激发系统运行一次垃圾收集器,这样将导致循环体的执行速度与垃圾收集器的运行速度差不多。 解决方法:将对象的创建从循环体内放在循环体外。,J2ME移动软件程序设计,7.2.3 字符串和字符串缓存,使用“+”操作符连接

5、两个字符串时,有可能导致新的字符串对象的创建,而新字符串对象的创建又将触发内存管理工作 解决方法:放弃使用字符串和字符串缓存,而使用字符数组。,J2ME移动软件程序设计,7.2.4 正确处理内存不足,当一个对象被创建时,如果发生内存不足的错误,MIDlet将抛出java.lang.OutOfMemoryError异常。 解决方法:使用try/catch来拦截异常,并当异常出现时给用户合理的解释。,J2ME移动软件程序设计,7.3.1 优化循环,7.3 优化代码运行速度,一切可以在循环体外部预先计算好的值都不应该放到循环体内部计算。 例:避免在循环体中对v.size() 的重复调用 优化前 优化

6、后,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 ,J2ME移动软件程序设计,7.3.2 使用数组代替对象,矢量和哈希表既简单又方便,但它们会增加大量的系统开销。 数组通常比集合类运行得更快、更可靠。,J2ME移动软件程序设计,7.3.3 使用缓存I/O,应该尽量避免从数据流中读写一个字节。 尽量使用带有缓冲的流读写方法。 BufferedReader和Buff

7、eredWriter两个类可以提供内置的缓冲I/O功能,但在J2ME中没有提供这两个类,因此如果要提高I/O效率,就应该自己设计符合要求的带有缓冲的I/O方式。,J2ME移动软件程序设计,7.3.4 主动清理内存,一旦不再使用所用内存,就应该立即释放,以提高应用程序的性能。 如果有数组不再使用了,设置数组指向null,使数组能被垃圾收集器收集。 如果程序需要马上进行内存垃圾搜集工作,显式地调用System.gc()方法来实现。,J2ME移动软件程序设计,7.4 优化用户界面,在台式计算机上能很快执行完毕的程序,在移动电话上都可能需要很长的时间才执行完。 MIDlet的界面设计必须能让用户感到程序在运行,而不是长时间没有任何反应的等待。 在程序执行需要较长时间的地方加入一些进度指示器(例如标尺),这样用户才能够知道程序在执行需要大量时间的运算。 在MIDlet的界面设计中,基本的准则是:简单明了、使用快捷、响应及时和信息丰富。,J2ME移动软件程序设计,7.5 合理地打包应用程序,仅仅打包使用的代码 使用代码加密保护程序,J2ME移动软件程序设计,7.6 J2ME的程序兼容性,JSR全称Java Specification Request,是任何个人或团体向JCP(Java 社区进程)提出增加一个标准化技术规范的正式请求。 JSR兼容性的测试工具,J2ME移动软件程序设计,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号