使用Flex Builder 3.x中的性能分析工具
教你如何使用性能分析工具并找出内存泄露的根源
关于性能分析工具
(该文翻译者:Edison Guo 原文见Flex Builder 3.x 帮助文档 About Profiling)
Adobe Flex 性能分析工具(Profiler)能够帮助我们诊断应用程序中的性能瓶颈和内存泄漏。我们从Flex Builder中启动性能分析工具之后,在我们同应用程序的交互过程中,性能分析工具将记录应用程序的各种状态。例如,对象的数量及这些对象的大小,被调用的方法的数量以及调用这些方法所消耗的时间。 分析应用程序能够帮助我们确定以下问题:
n 调用频率 有时,我们会多次调用一些计算代价昂贵(耗时)的方法,而这些调用是不必要的。通过识别那些经常被调用的方法,我们能够在调节性能的过程中,专注于应用程序中对性能影响最大的地方。
n 方法耗时 性能分析工具能够告诉我们一个调用特定方法所消耗的时间。如果这个方法被调用了多次,性能分析工具将告诉我们,在与应用程序交互的这段时间里,调用这个方法所消耗的平均时间。如果其中的一些方法造成了性能瓶颈,我们可以想办法优化一下它们。
n 调用堆栈 通过追踪某一方法的调用堆栈,我们可以看到应用程序调用该方法的完整路径。
n 实例数量(对象分配) 有时,我们会发现同一对象被创建了太多次,而我们只需要这一对象的几个实例。在这些情况下,如果只需要一个实例,我们可能考虑使用单件模式;如果需要多个,则应用其他技术来减少对象分配。如果确实需要很多该对象的实例,我们得考虑优化对象本身来降低资源总数以及内存占用量。
n 对象大小 如果观察到某些对象大小异常,我们可以尝试优化它们以减少其内存占用量。程序中某些对象被多次创建时尤为有效。
n 垃圾回收 比较性能快照时,我们可能发现一些不再被程序使用的对象仍然在“loitering”,或者存储在内存中。为了避免内存泄漏,我们可以添加一些逻辑,来移除这些对象身上的“残余”引用。
我们不应当把性能分析看成一个与应用程序开发毫无关联,相对独立的阶段。相反,性能分析应当或多或少的集成到整个开发过程的每一阶段。我们在开发过程中应尽可能的早进行性能分析,多进行性能分析。这样,我们才能更快的找出有问题的地方。性能分析是一个反复进行的过程,尽可能频繁的进行性能分析将使我们受益无穷。
使用Flex Builder 3.x 性能分析工具
教你如何使用性能分析工具并找出内存泄露的根源
Using the Flex Builder 3.x Profiler)最近接触了许多内存泄漏方面的问题。 现在我终于有时间将我在分析内存泄漏中用到的技术写下来了。
我创建了一个SWF文件来代替 PowerPoint。这样,在看报告的同时,大家也可以学习如何使用Profiler。在文章中,我说明了性能分析工具中显示的内存与通过System.totalMemory获取的内存及进程(Flash Player, IE, Firefox)所占用内存的不同,并演示了针对内存泄漏问题中常见的两个情景,该如何分析。 查看报告(英文)
和往常一样,以下是附加的说明。
经常听到的一个话题是如何实现XML驱动或数据驱动的用户界面。在这个SWF文件中,我演示了一种实现方法。报告内容由一个XML 文件控制。一个独立的引擎解析这个XML文件,根据解析的结果创建特定的交互部件。改变报告的内容仅需要修改XML文件即可。我也可以轻松的添加新的部件。源码可以从这里得到: 下载Flex Builder项目
这个SWF同时也演示了一种改进启动时间的技术。我们的Blog系统用起来太痛苦了,我不希望在发表日志的时候上传两个以上的文件,而这篇报告有成打的图片需要上传。因此,我将这些图片嵌入到SWF中,而不是从外部将它们加载进来。但是,下载这些图片所花费的时间将延迟启动。为了避免这种情况,我将所有的图片塞进SWF的第三帧,这样Flex就能迅速启动并运行,而这些图片在SWF文件末尾才会被下载。之所以这样做,是因为这些图片并会立刻被使用。 希望这些能帮助大家!
译者注:
如何将图片嵌入到第三帧?
//将第三帧加载图片以改善加载时间。对于MXMLC,添加:
// –frame=Three,Frame3Assets
//作为编译参数
// 能够这样做是因为我们首次呈现给用户的内容中不包含这些图片
参见Flex应用程序启动详解
性能分析工具情景
教你如何使用性能分析工具并找出内存泄露的根源
profiler scenarios情景
l 如何使用Flex Builder 3.x性能分析工具找出内存泄漏依赖于应用程序自身的行为
l 有两种常见情景
n 创建/销毁
n 替换当前
创建/销毁
l 在一个创建/销毁情景中,一连串的对象被创建,之后被销毁
n 弹出式对话框是一个经典的例子
l 所有被创建的对象所占用的内存都应被回收
l 内存占用量在开始的时候有一个初始值,对象被创建后,该值增长,对象被删除,内存被回收后,该值应恢复为初始值
替换当前
l 在一个“替换当前”的情景中,一连串的对象被类似的一系列新对象所替换 n 这个幻灯片就是一个例子
n 当改变幻灯片的时候,老的幻灯片被新的所替换
l 因为对象被替换而不是销毁,内存占用量应大致保持在相同的水平 性能分析工具最适合创建/销毁情景
l 性能分析工具被设计出来主要用于诊断创建/销毁情景
n “游荡对象”视图显示出存在于最近一次内存快照中,之前的内存快照中没有出现过的对象
n 在“替换当前”情景中“游荡对象”将显示所有(或大多数)对象,因为替换的对象总是在之前的内存快照中不存在的对象
l 十分不幸,这意味着分析“替换当前”场景时,我们不得不手动的比较内存快照
教你如何使用性能分析工具并找出内存泄露的根源
在创建/销毁场景中,我们可以很简单的通过“游荡对象”视图,找到那些应当被销毁,但是依然存在的对象。因为,只要是出现在视图中的,都是被怀疑的对象。浏览并锁定那些应当被销毁的对象即可。
在“替换当前”情景中,因为“游荡对象”显示出了所有的对象,即使它不应当被销毁。因此,我们没办法简单的判断一个对象是否该存在,只能手动的在内存快照中寻找答案。
游荡对象(Loitering Objects):应当被销毁,释放掉其所占用的内存,但是因为某种原因仍在内存中保留的对象。
分析外部应用程序
l 这一SWF文件能够用来演示如何分析外部应用程序的性能
n 通常情况下,我们会打开一个项目,并分析这个项目中的应用程序 n 我们一起来看看如何分析“创建/销毁”和“替换当前”情景
l 开始之前,打开“Profiling”视图,在“Profile”菜单下选择“Profile External Application”
启动性能分析工具
l 我们会看到一个如下的对话框
教你如何使用性能分析工具并找出内存泄露的根源
l 点击“New”按钮来添加一个新的应用程序
添加新的应用程序
l 我们将看到一个如下的对话框
l 输入如图所示的URL,然后点击“OK”
启动应用程序
教你如何使用性能分析工具并找出内存泄露的根源
l 应该有一个这样的对话框出现
l 点击这一SWF文件的URL使它高亮
l 点击“Launch”按钮
配置性能分析工具
l “Configure Profiler”对话框出现
教你如何使用性能分析工具并找 …… 此处隐藏:4465字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




