Welcome

首页 / 软件开发 / JAVA / 用Runtime Spy调整Eclipse的启动性能,第1部分 - 开始

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

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

为什么 Eclipse 需要快速启动

Eclipse 的体系结构是为了在运行期发现其环境的扩展而设计的。这种体系 结构化扩展能力让很多工具可以无缝地集成到 Eclipse 中。Eclipse 架构师在 项目早期就意识到,这些扩展不能在客户机代码中以程序控制的方式定义,因为 当 Eclipse 集成了越来越多的扩展后,累积的启动开销将变得无法接受。从而 ,这些扩展由 插件 定义。

为了在保持灵活性的同时避免启动开销,插件静态地将它的扩展定义在一个 清单文件(manifest file)中。插件清单定义了足够的信息,使 Eclipse 平台 可以延迟加载代码,同时仍可以识别扩展的初始影响。例如,用户界面扩展点需 要足够的信息来描绘初始的用户界面元素(例如,所提供的工具条按钮的图标和 热区提示(tooltip)文本),这样平台可以推迟插件代码的加载,直到用户真 正选择一个菜单选项、选择一个工具条按钮、打开一个属性页或者启动某个向导 时才加载。插件的最初开销只是对其清单的解析。XML 格式的解析很快,结果保 存到磁盘,下次还可再用,这样,当定义了新的插件或者扩展时,启动不会受到 显著影响。不过,有一些方法会无意中让这种好处失效,从而增加了启动时间和 内存消耗。

幸运的是,Eclipse 插件开发者可以使用 Runtime Spy 透视图来帮助追踪这 些问题。本文介绍了核心工具插件和它的 Runtime Spy,并介绍了 readme 文件 内容之外的对其实用工具的一些零散描述。

安装核心工具

安装很简单。只需要下载核心工具压缩包并解压缩到您的 <inst_dir>eclipseplugins 目录。接下来决定您是不是希望侦探您的 底层 Eclipse 设施(使用 -debug 命令行选项),或者是不是希望侦探您的运 行期工作台(使用它的启动配置的 Tracing 页。我们将在“ 侦探运行期工作台 ”回到这一话题)。现在让我们来看第一个选择:侦探您的底层 Eclipse 设施 。

首先,从 pluginsorg.eclipse.core.tools_1.0.2 子目录下拷贝 .options 文件到您的 <inst_dir>eclipse 目录来,以启用所有可用的 Spy 选项 。这将启用除了类监视以外的所有选项。要监视类的加载,您必须在 pluginsorg.eclipse.core.boot_1.0.2 race.properties 文件中列出包含您 所感兴趣的类的包或者插件。在“ 查看插件的哪些类被加载”部分我们再向您 介绍如何指定这些内容。

然后启动 Eclipse,不要忘记指定 -debug 命令行选项,这会去读位于 <inst_dir>eclipse 目录下 .options 文件。另一种方法,您可以将 .option 文件所在的位置标识为 -debug 选项的一个参数(例如, -debug file:d:....options )。

侦探工作台

我们假定您已经安装了核心工具文件,并重新启动了 Eclipse。由于已经指 定了 -debug 命令行参数,您将会看到定向到标准输出的一些启动消息。当处于 调试模式时,这些将显示在一个单独的命令提示窗口中,如图 1 所示。

图 1. 对 -debug 选项的指定打开了一个显示标准输出消息的命令提示窗口

既然每个 Runtime Spy 的视图都已经启动并运行,让我们来快速浏览一下这 些视图。不要忘记,Spy 作为“spied”插件在同一个工作台中运行,因此在使 用工具本身的正常过程中可能会有一些插件被激活。这通常没关系,因为它只是 用到了底层的功能,而这些功能应该已经加载或者早晚都得加载。有一种情况未 必会出现,但确实重要,那就是别忘了它的视图只是根据需要而更新,所以 Runtime Spy 透视图第一次打开时,它将只显示出在它自己启动之 前 就已经在 运行的那些插件。

查看哪些插件在运行

选择 Window > Open Perspective > Runtime Spy打开四个视图,如 图 2 所示。

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