《J2ME移动软件程序设计》课件第7章.ppt

上传人:ds的n我 文档编号:43820317 上传时间:2024-05-12 格式:PPT 页数:16 大小:303.50KB
下载 相关 举报
《J2ME移动软件程序设计》课件第7章.ppt_第1页
第1页 / 共16页
《J2ME移动软件程序设计》课件第7章.ppt_第2页
第2页 / 共16页
《J2ME移动软件程序设计》课件第7章.ppt_第3页
第3页 / 共16页
《J2ME移动软件程序设计》课件第7章.ppt_第4页
第4页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

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

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

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

5、件程序设计移动软件程序设计7.2.3 字符串和字符串缓存字符串和字符串缓存 l使用“+”操作符连接两个字符串时,有可能导致新的字符串对象的创建,而新字符串对象的创建又将触发内存管理工作 l解决方法:放弃使用字符串和字符串缓存,而使用字符数组。J2ME移动软件程序设计移动软件程序设计7.2.4 正确处理内存不足正确处理内存不足 l当一个对象被创建时,如果发生内存不足的错误,MIDlet将抛出java.lang.OutOfMemoryError异常。l解决方法:使用try/catch来拦截异常,并当异常出现时给用户合理的解释。J2ME移动软件程序设计移动软件程序设计7.3.1 优化循环优化循环 7

6、.3 优化代码运行速度优化代码运行速度 l一切可以在循环体外部预先计算好的值都不应该放到循环体内部计算。l例:避免在循环体中对v.size()的重复调用l优化前l优化后for(int i=0;i v.size();i+)Object o=v.elementAt(i);/处理对象oint size=v.size();for(int i=0;i size;i+)Object o=v.elementAt(i);/处理对象oJ2ME移动软件程序设计移动软件程序设计7.3.2 使用数组代替对象使用数组代替对象 l矢量和哈希表既简单又方便,但它们会增加大量的系统开销。l数组通常比集合类运行得更快、更可靠。

7、J2ME移动软件程序设计移动软件程序设计7.3.3 使用缓存使用缓存I/O l应该尽量避免从数据流中读写一个字节。l尽量使用带有缓冲的流读写方法。lBufferedReader和BufferedWriter两个类可以提供内置的缓冲I/O功能,但在J2ME中没有提供这两个类,因此如果要提高I/O效率,就应该自己设计符合要求的带有缓冲的I/O方式。J2ME移动软件程序设计移动软件程序设计7.3.4 主动清理内存主动清理内存 l一旦不再使用所用内存,就应该立即释放,以提高应用程序的性能。l如果有数组不再使用了,设置数组指向null,使数组能被垃圾收集器收集。l如果程序需要马上进行内存垃圾搜集工作,显

8、式地调用System.gc()方法来实现。J2ME移动软件程序设计移动软件程序设计7.4 优化用户界面优化用户界面l在台式计算机上能很快执行完毕的程序,在移动电话上都可能需要很长的时间才执行完。lMIDlet的界面设计必须能让用户感到程序在运行,而不是长时间没有任何反应的等待。l在程序执行需要较长时间的地方加入一些进度指示器(例如标尺),这样用户才能够知道程序在执行需要大量时间的运算。l在MIDlet的界面设计中,基本的准则是:简单明了、使用快捷、响应及时和信息丰富。J2ME移动软件程序设计移动软件程序设计7.5 合理地打包应用程序合理地打包应用程序 l仅仅打包使用的代码 l使用代码加密保护程序 J2ME移动软件程序设计移动软件程序设计7.6 J2ME的程序兼容性的程序兼容性 lJSR全称Java Specification Request,是任何个人或团体向JCP(Java 社区进程)提出增加一个标准化技术规范的正式请求。l JSR兼容性的测试工具 J2ME移动软件程序设计移动软件程序设计

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

当前位置:首页 > 工程图书 > 建筑设计

客服QQ:2660337891点击这里给我发消息

手机:13423958347
 汇文网版权所有  联系邮箱:2660337891#qq.com (请把#改为@)  
  鄂ICP备2022007403号,本站可开发票,需开票联系客服QQ。