eclipse 的启动过程是怎么样的?

cdqn2007 2009-05-01 05:07:48
哪位大侠知道eclipse的启动过程?能不能详细说说,谢谢!
这个问题的原因就是,eclipse启动太慢了,我想知道,他怎么启动这么慢。
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdqn2007 2009-05-01
  • 打赏
  • 举报
回复
谢谢大家

我用的是中文版的eclipse 3.2 的,好象没有7楼说的 KeepResident,我这个版本有吗?

哪个版本的有?
  • 打赏
  • 举报
回复
Eclipse启动比较慢
在Eclipse工作台的Windows->Preferences中会看到新增的KeepResident选项页,
可以配置,最小工作集大小、最大工作集大小、VirtualLock,分别指定希望Windows分配给Eclipse的最小物理内存、最大物理内存和是否强制保持这部分内存。
具体设置根据自己的环境而异,
可以给大家参考我个人的配置:
我的环境是Windows XP SP2,256MB内存,三个选项分别是:80MB、128MB、选中。最使用情况来看,运行很顺

简单原理:
首先,我们知道,Windows的内存实际上是物理内存+虚拟内存,必要的时候它会把应用程序占用的物理内存page到硬盘;其次,对于普通的应用程序Windows默认只会分配少量物理内存,并且这对需要相对大量内存的Eclipse来说是不能接受的;再次,一旦Eclipse窗口最小化,Windows默认就会认为它暂时不再被使用,于是会将它使用的物理内存挪出来给其他的进程使用,这样我们最小化和再次打开就会感到严重的延迟。KeepResident非常小,其实就是调用Windows的SetProcessWorkingSetSize()和VirtualLock()这两个API来实现指定Eclipse运行时内存分配的具体设置。

这是引用网上朋友总结,希望对楼主有帮助
  • 打赏
  • 举报
回复
启动方式大概是这样的:
1. 查找JRE的位置
2. 启动startup.jar
3. 初始化系统服务, 例如Preferences
4. 遍历plugins和features
5. 初始化plugins并注册到OSGI中.
6. 如果有Product, 则启动它, 如果没有则直接启动Application.
7. 你可以看到界面了.
Dantin 2009-05-01
  • 打赏
  • 举报
回复
启动慢,我也觉得是加载了大量的插件。
不善^ 2009-05-01
  • 打赏
  • 举报
回复
启动慢的原因:
1.你机子本身配置低
2.因为ECLIPSE启动后要加载很多东西,可以尝试关闭一些不必要的功能
3.第一次启动ECLIPSE比较慢 以后就快了点 按照马老师的话说就是ECLIPSE还不认识你 所以慢 呵呵

总体感觉 ECLIPSE还可以 我一直再用
jinxfei 2009-05-01
  • 打赏
  • 举报
回复
启动慢,我觉得是加载了大量的插件。
wuyu637 2009-05-01
  • 打赏
  • 举报
回复
启动的慢一般来说,

1. 你的默认的工程路径下的工程是不是太多了, 如果是,可以把工程close掉一部分。
2. 上一次打开的文件是不是太多了。如果是,可以把文件关掉。


而实际上,如果你的机器比较好的话,应该不存这个问题。
你的机器是
wuyu637 2009-05-01
  • 打赏
  • 举报
回复
用Eclipse有些年头了,一直想静下心来研究一下它的代码。但工作的事情实在是太烦杂,且产品开发中也没有牵扯到这一部分,所以一直处在使用的层次上从来没有contribute的念头。最近抽了点时间,研究了windows平台的3.2.1版本。



Eclipse.exe负责启动,也就是把startup.jar运行起来,用java –jar startup.jar是差不多的效果。 startup.jar里只有2个类,一个是Main.java,一个是WebStartMain.java,所不同的是后者是用于java web start的启动类。



Main.java的任务比较简单,主要是处理System.GetProperties()和args,从这些参数里也可以看出eclipse的定制性非常强,另一方面处理了一下启动界面(默认一启动所看到的图像,其实也可以用参数把它隐掉),它最主要的核心任务是查找到 org.eclipse.osgi_3.2.1*.jar,并把它load进来后通过java的反射机制把 org.eclipse.core.runtime.adaptor.EclipseStarter类运行起来。



接下来要说的就是EclipseStarter类的运行情况了,它位于OSGI的那个plugin(注:D:\Program

Files\eclipse\plugins\org.eclipse.osgi_3.2.2.R32x_v20070118.jar)中。对OSGI,要学习Eclipse一定要学习OSGI(可以从http://www.osgi.org/查找到相关的资料)。简单来说OSGI本来是用于设备上软件的一个开发框架,在eclipse3.1中被用来作为系统的模块化框架,eclipse有个专门的项目equinox专门用来实现osgi框架,也被成为systembundle,而所有其它的作为一个bundle被systembundle来管理。



EclipseStarter的作用就把osgi的启动类,它是通过configuration目录下的config.ini来进行配置的。它的第一步主要实例化了org.eclipse.osgi.baseadaptor.BaseAdaptor和 org.eclipse.osgi.framework.internal.core.OSGi并启动,你们会看到configuration生成org.eclipse.osgi目录放置相关的bundle信息,在eclipse启动的-clean参数也就是清理这个目录。Osgi所做的工作是把equinox、runtime、update等基本的bundle定位、加载进来。



EclipseStarter一切就绪后就要启动ide了,它是通过org.eclipse.core.runtime.internal.adaptor. EclipseStarter启动起来的。说道这里又要说osgi,实际上这里不是直接、也不是reflection启动的,而是不同osgi的ServiceRigistry获得后实例化后启动的(也就是在上一步load runtime bundle的时候注册上的服务)。



下一步就要转战org.eclipse.core.internal.runtime.PlatformActivator了,它的作用要说也简单,把所有注册过的applications级的IExtension启动起来,这里就又主要转到 org.eclipse.ui.ide_3.2.1.M20060915-1030.jar中的 org.eclipse.ui.internal.ide. IDEApplication,一直到这里从开始启动我们的ide。



从以上过程也可以看出,eclipse就是通过启动类把osgi框架启动起来作为内核也就是systembundle,再进行其它bundle的加载,和 jboss通过启动类启动jmx微内核再加载各种MBean的机制是类似的,这也就导致如果对eclipse整体没有一个很好的了解,学习梯度还是比较大的,经常看着看着只见树木不见森林了。



出处:

http://zjiffy.spaces.live.com/blog/cns!F2E8C1A583253A4E!135.entry

58,455

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧