第13章J2ME应用程序的性能优化.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章J2ME应用程序的性能优化

第13章 J2ME应用程序的性能优化 知识点: 代码优化的一些基准 优化内存使用 优化代码运行速度 优化用户界面 合理地打包应用程序 J2ME的程序兼容性 本章导读: 本章主要介绍如何优化一个J2ME程序的性能。对J2ME中字符串编程、用户界面编程、MIDlet打包和加密等工作进行了详细讨论,并对如何提高性能给出了切实可行的方法。 * * 第13章 J2ME应用程序的性能优化 7.1.1 代码优化基准概述 7.1 代码优化的一些基准 在J2SE(Java 2的标准版)中,可以提供许多工具来对代码性能、代码运行瓶颈、内存使用情况等进行检测。 J2ME中不存在这些工具,需要使用一些传统的方法来测试和优化代码。 在MIDP的API中提供了几种对测试和优化代码很有用的方法。 第13章 J2ME应用程序的性能优化 7.1.2 内存测试基准 使用java.lang.Runtime中所提供的两种方法 public long freeMemory();给出当前有多少字节的剩余内存可以使用。 public long totalmemory();给出在当前运行环境中总共的存储器大小。 第13章 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; 第13章 J2ME应用程序的性能优化 7.1.3 时间测试基准 采用传统的方式测试运行速度 long start,finish; start =System.currentTimeMillis(); someMethod(); finish =System.currentTimeMillis(); long duration =finish -start; 第13章 J2ME应用程序的性能优化 7.2.1 优化内存概述 7.2 优化内存使用 在J2ME环境中内存总是稀缺的 内存分配和垃圾收集器的运行将可能使应用程序的运行速度变慢 在J2ME环境中小心使用内存 第13章 J2ME应用程序的性能优化 7.2.2 创建和删除对象 每当创建一个新对象时,内存将被重新分配,而分配内存将花费很多时间。 在一个循环体开始处创建的对象,有可能在循环体的尾部被释放。这就意味着,每一次循环体的执行就将激发系统运行一次垃圾收集器,这样将导致循环体的执行速度与垃圾收集器的运行速度差不多。 解决方法:将对象的创建从循环体内放在循环体外。 第13章 J2ME应用程序的性能优化 7.2.3 字符串和字符串缓存 使用“+”操作符连接两个字符串时,有可能导致新的字符串对象的创建,而新字符串对象的创建又将触发内存管理工作 解决方法:放弃使用字符串和字符串缓存,而使用字符数组。 第13章 J2ME应用程序的性能优化 7.2.4 正确处理内存不足 当一个对象被创建时,如果发生内存不足的错误,MIDlet将抛出java.lang.OutOfMemoryError异常。 解决方法:使用try/catch来拦截异常,并当异常出现时给用户合理的解释。 第13章 J2ME应用程序的性能优化 7.3.1 优化循环 7.3 优化代码运行速度 一切可以在循环体外部预先计算好的值都不应该放到循环体内部计算。 例:避免在循环体中对v.size() 的重复调用 优化前 优化后 for (int i =0;iv.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 } 第13章 J2ME应用程序的性能优化 7.3.2 使用数组代替对象 矢量和哈希表既简单又方便,但它们会增加大量的系统开销。 数组通常比集合类运行得更快、更可靠。 第13章 J2ME应用程序的性能优化 7.3.3 使用缓存I/O 应该尽量避免从数据流中读写一个字节。 尽量使用带有缓冲的流读写方法。 BufferedReader和BufferedWriter两个类可以提供内置的缓冲I/O功能,但在J2ME中没有提供这两个类,因此如果要提高I/O效率,就应该自己设计符合要求的带有缓冲的I/O方式。 第13章 J2ME应用程序的性能优化 7.

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档