用Runtime Syp调整Eclipse的启动性能,第2部分

Runtime Spy 是 Eclipse.org 提供的核心工具 (Core Tools)之一,它是特 别设计的一个透视图及一组视图,用于帮助您找到并诊断插件启动性能问题。其 中的一个案例研究说明了Runtime Spy 如何用于提高 IBM WebSphere Studio Application Developer 的启动性能。上一篇文章,也就是 第1 部分,对 Runtime Spy 进行了介绍。

阅读完本系列文章的 第 1 部分 后,您应该已经对 Runtime Spy 如何来帮 助您查找启动问题的位置有了大体的认识。让我们通过一些特定的例子来弄明白 如何用它减少您的插件启动时间。为了让话题更有可读性,我们将探讨一些在 Runtime Spy 帮助下纠正的问题,这些问题的纠正是 IBM WebSphere Studio Application Developer 性能提高的一个方面。

注意:核心工具只能运行于 Eclipse 版本 2.x。在本文发表时,它们还不能 运行于 Eclipse 3.0 驱动程序上;编号为 47518 的 bug 描述了这一问题。

帮助 Eclipse 快速启动

为提高一个基于 Eclipse 的应用程序的启动性能,一般来说有两个目标:

尽可能地延迟插件的激活。

在激活您的插件时将涉及到的工作量减到最少。

这两个目标共同的原则是 尽可能延迟代码的执行。您可以采用的一些方法:

不要加载您的插件

怎么办?首先,要遵循 Eclipse 本身的插件扩展的思 想。不要忘记,很多 Eclipse 扩展点定义要求贡献者静态地声明足够的信息, 以延迟代码的加载,直到需要执行被请求的动作时才加载。这是 Eclipse 体系 结构的基本思想,在插件清单文件的声明中得到了体现。您自己的扩展点定义也 应该采用这一方法。

减少插件初始化时加载的类的数量

最常出现问题的地方是 Plugin.startup 方法中的引用。很多插件重载这个方法以完成它们的初始化。理想的解决方法通常是,让您的插件延迟它的初始化,直到用户请求您的产品的 某个特定的动作时再初始化。要不然,下一个最好的选择是最小化引用的类和插 件的数量。在任何一种情况下,Runtime Spy 都可以指出哪里可能会占用太多的 时间或者触发太多其他插件的激活。

在插件初始化期间减少 CPU 利用率

同样,最常出现问题的地方还是插件 的 startup 方法的代码或者它所调用的代码。内存结构的滞后初始化可以节省 CPU 时间并延迟其他插件的激活。还有一种可能是在启动时派生一个单独的低优 先级的线程,当系统空闲时再去完成初始化,不过这种方法需要特别注意处理好 同步。

通过延迟插件的激活,会给用户一种产品更为灵活的印象。尽管 累积的CPU 时间是完全相同的,但是相对于在最开始强制完成,将其分解为若干小块在较长 的一段时间内分步完成会进一步降低人们的注意力。在第一次调用时(也就是启 动您的产品或者打开第一个透视图、编辑器或视图时)尤其不应该有延迟,因为 正是在这个时候用户最关注于工作的完成而没有太多耐心。

再介绍 Runtime Spy

Runtime Spy 为您提供了用于跟踪三种加速启动方法的基本统计表,如图 1 所示。

图 1. Runtime Spy 透视图由 Activated Plugins、Loaded Classes、 Plugin Datasheet、和 Stack Trace 四个视图组成

您的第一个目标是让 Activated Plugins视图中出现的条目减到最少。对于 那些出现在列表中的插件,您的第二个目标应该是让 Loaded Classes视图中出 现的条目减到最少。Activated Plugins 视图中的 Startup time列将为您指出 那些启动时间较长的插件。在 Activated Plugins 中选择 按钮可以更新 Stack Trace视图,让您明白 插件 为何被加载,在 Loaded Classes 视图中选择 按钮将为您说明 类为何被加载。

时间: 2024-08-31 03:23:22

用Runtime Syp调整Eclipse的启动性能,第2部分的相关文章

用Runtime Spy调整Eclipse的启动性能,第1部分

我们几乎每天都会听说有新的公司选用 Eclipse 作为他们的应用程序开发平 台.尽管所有这些公司的产品(更不用说所有的 Eclipse 组织成员公司的产品 了)的安装设置可能是正在趋于相同,但是内存使用过多和性能下降的风险还是 很大.本文介绍了一个非常有用却鲜为人知的工具,Runtime Spy,来帮助插件开发者.Runtime Spy 透视图是核心团队(Core team)的侦探和工具(Spies and Tools)小组的一部分. 注意:核心工具只能运行于 Eclipse 版本 2.x.在

Android Studio直接运行影响启动性能

Android Studio直接运行影响启动性能 之前eclipse时代,测试空应用启动性能时,都是直接在IDE中启动,这样修改起来方便.到了Android Studio时代,这个习惯被我保持下来了.结果就被Instant Run功能给小小坑了一下. 从性能日志上看,发现空应用在handleBindApplication的时候,在MTK6753芯片上费时60多毫秒,展讯9832芯片上超过100毫秒.而空应用,既没有Application的onCreate,又没有installProvider之类

JavaScript 启动性能探究

本文讲的是JavaScript 启动性能探究, 作为 web 开发者,都知道 web 项目开发到最后,页面规模很容易变的很大. 但 加载 一个网页远不止从网线上传送字节码那么简单.浏览器下载了页面脚本之后,它还必须解析.解释和运行它们.这篇文章将深入 JavaScript 的这一部分,研究 为什么这一过程会拖慢应用程序的启动,以及 如何 解决. 过去,人们并没有花很多时间优化 JavaScript 的解析.编译步骤.我们总是期望解析器在遇到 script 标签时立即解析和执行代码,但是情况并非如

servlet-Red5-1.0集成到eclipse中启动报错

问题描述 Red5-1.0集成到eclipse中启动报错 2015-7-4 19:09:27 org.apache.catalina.core.ApplicationContext log 严重: StandardWrapper.Throwable org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [clas

Tomcat在Eclipse中启动超时的问题解决

具体现象就是eclipse在启动tomcat时, 会报错: "Timeout waiting for Tomcat v6.0 Server @ localhost to start. Server did not start after 45s" 的错误. 尤其是在debug时更加容易出现这 个问题. 通过错误提示来看, 是因为tomcat启动时间超过了45m, 于是被终止了启动.出现这个问题, 可能是应用程序比较庞大, 有很多启动加载项和初始化工作, 或者log太多.想着加大tomc

CLR全面透彻解析: 提高应用程序启动性能

由于等待应用程序启动是令许多用户都感到沮丧的一件事情,因此,侧重于提高客户端应用程序的启 动性能将极大增强客户的第一印象,并使他们对您的努力成果印象深刻.同时,鉴于启动性能对用户非常 重要,所以值得研究一下其影响因素,这样才能避免最常见的错误. 应用程序启动通常分为冷启动和热启动.在托管应用程序环境中,冷启动是指 Microsoft .NET Framework 系统程序集和应用程序代码均不在内存中时,因而需要从磁盘提取它们.热启动则是指应用程 序的后续启动,或者当大部分系统代码因之前由另一托管

Windows7快速启动“性能监视器”的方法

在平时测试过程中,经常需要查看"性能监视器"这个工具.Windows7下的性能监视器工具更是得到了增强,非常好用. 这里介绍一下快速启动"性能监视器"的方法: 1.按Win+R键打开运行对话框 2.输入"perfmon", 然后回车即可. 如图: 执行后打开的"性能监视器"如图:         注:更多精彩教程请关注三联windows7教程栏目,三联电脑办公群:189034526欢迎你的加入

tomcat-idea下启动项目报错,但是在eclipse下启动运行正常

问题描述 idea下启动项目报错,但是在eclipse下启动运行正常 idea下启动项目报错,但是在eclipse下启动运行正常,用的tomcat,报错信息如下,求解答!不知道有什么问题,搞了一早上也没有解决! 解决方案 tomcat可以正常启动但是在Eclipse下不可以正常启动IDEA 下启动tomcat报错IDEA启动Tomcat报错

图片-eclipse下启动tomcat报错

问题描述 eclipse下启动tomcat报错 解决方案 你的这个目录下边是不是空的啊 解决方案二: 我怎么觉得你的路径有些问题呢 解决方案三: 我用的是eclipse-jee-indigo-SR2-win32这个版本,其它版本可能有所不同 配置servers服务时,会在工作路径下创建一个servers.且不会把调试目录放入Tomcat里的webapps里.但用地址仍可访问.等工程完成可以打包成.war手工放入webapps里. 1.找不到apr--(这个网上很多的,搜一下,要下一个对应版本的t