关于myeclipse不能启动和卡的问题.docx
- 文档编号:9249664
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:33
- 大小:1.57MB
关于myeclipse不能启动和卡的问题.docx
《关于myeclipse不能启动和卡的问题.docx》由会员分享,可在线阅读,更多相关《关于myeclipse不能启动和卡的问题.docx(33页珍藏版)》请在冰豆网上搜索。
关于myeclipse不能启动和卡的问题
关于myeclipse不能启动和卡的问题
2009-07-2909:
30
被myeclipse的配置折磨了一天,网上也找了很多资料,没有一个可行的
最后在尝试中终于可以了
注意这里的:
-XX:
PermSize=64M
在我的电脑上(2G内存)设为其他的(128M、256M)都不行
————————————————————————这里附上网上看到的对这些参数涵义的解释
关于eclipse.ini的几个问题:
1.各个参数的含义什么?
2.为什么有的机器我将-Xmx和-XX:
MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3.为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
下面我们一一进行回答
1.各个参数的含义什么?
参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
堆(Heap)和非堆(Non-heap)内存按照官方的说法:
“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。
堆是在Java虚拟机启动时创建的。
”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。
可以看出JVM主要管理两种类型的内存:
堆和非堆。
简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
堆内存分配JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。
非堆内存分配JVM使用-XX:
PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:
MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
JVM内存限制(最大值)首先JVM内存限制于实际的最大物理内存(废话!
呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。
简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
2.为什么有的机器我将-Xmx和-XX:
MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:
堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。
所以说设置VM参数导致程序无法启动主要有以下几种原因:
1)参数中-Xms的值大于-Xmx,或者-XX:
PermSize的值大于-XX:
MaxPermSize;
2)-Xmx的值和-XX:
MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
3.为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?
这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。
比如我们使用-vmC:
\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
-vmC:
\Java\jre1.6.0\bin\javaw.exe按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
-vmargs-Xms128M-Xmx512M-XX:
PermSize=64M-XX:
MaxPermSize=128M实际运行的结果可以通过Eclipse中“Help”-“AboutEclipseSDK”窗口里面的“ConfigurationDetails”按钮进行查看。
myeclipse启动时会去加载一些模块,检查一些插件是否需要更新还有工作空间的建立等等,所以启动时会显得比较慢,单知道这些后我们可以针对其进行优化
1、去除不需要加载的模块
一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,所以可以将一些不使用的模块禁止加载启动。
通过Windows-Preferences打开配置窗口,依次选择左侧的General-StartupandShutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块。
windows–>perferences–>general–>startupandshutdown
关掉没用的启动项:
WTP:
一个跟myeclipse差不多的东西,主要差别是WTP是免费的,如果使用myeclipse,这个可以取消
Mylyn:
组队任务管理工具,类似于CVS,以任务为单位管理项目进度,没用到的可以取消
Derby:
一种保存成jar形式的数据库,我没用到,取消
一大排以MyEclipseEASIE打头的启动项:
myeclipse支持的服务器,只选自己用的,其他取消,比如我只选了tomcat6.x
2、取消MyEclipse在启动时自动验证项目配置文件
默认情况下MyEclipse在启动的时候会自动验证每个项目的配置文件,这是一个非常耗时的过程,
可以在Preferences窗口依次选择MyEclipseEnterpriseWorkbench-Validation,然后在右侧的Validator列表中只保留Manual项就可以了(Manual全部勾选,Bulid项只留下第一项)。
如果需要验证的时候只需要选中文件,然后右键选择MyEclipse-RunValidation就可以了。
windows–>perferences–>myeclipse–>validation
把除了manual下面的全部点掉,build下只留classpathdependencyValidator
手工验证方法:
在要验证的文件上,单击鼠标右键–>myeclipse–>runvalidation
3、去掉拼写检查(如果你觉的有用可以不去)
拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处:
windows–>perferences–>general–>validation->editors->TextEditors->spelling
myeclipse打开jsp的默认编辑器不好,会同时打开预览
windows–>perferences–>general–>editors->fileassociations,
把默认改成MyEclipseJSPEditor()
原默认的jsp编辑器是MyEclipseVisualJSPDesigner,顾名思义,此编译器是jsp可视化编辑器,对于初学者有很多的帮助,
但修改此项的默认编辑器其实可以提高启动速度)
4、关闭自动更新
如果是myeclipse7.5:
(1)关掉maven自动更新:
window-preferences-MyEclipseEnterpriseWorkbench-Maven4MyEclipse-Maven,
关闭所有Download和Update开头的选项,共四项(去掉前面的勾)
(2)关闭更新调度:
window–>preferences–>General–>StartupandShutdown–>AutomaticUpdatesScheduler(去掉前面的勾)
(3)window–>preferences–>MyeclipseDashboard,关闭Show……onstart
5、加大JVM的非堆内存
打开myeclipse.ini
-startup
../Common\plugins\org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar
--launcher.library
../Common\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731
-clean
-configuration
configuration
-vm
C:
\Users\lenovo\AppData\Local\Genuitec\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\client\jvm.dll
-vmargs
-Xmx384m
-XX:
MaxPermSize=384m
-XX:
ReservedCodeCacheSize=96m
以上是我的myeclipse.ini,需要修改是-Xmx,-XX:
MaxPermSize,-XX:
ReservedCodeCacheSize,
将这三项的值调大,但并不是越大越好,曾经在相同的条件下做过测试(内存2GB),-Xmx,-XX:
MaxPermSize的值为384m时比512m时要快(视具体的计算机而定),
-Xmx,-XX:
MaxPermSize的值设为同样大小且两者之和不能超出你的计算机本身的内存大小
6、window-preferences-MyEclipseEnterpriseWorkbench-Maven4MyEclipse-Maven,将MavenJDK改为电脑上安装的JDK,即不使用myeclipse提高的JDK
登记add按钮,选择你的电脑上的JDK即可(注意:
不是JRE,我的值为:
Java6.014)
7、window-preferences-MyEclipseEnterpriseWorkbench-Matisse4Myeclipse/Swing,将Design-timeinformation(dt.jar)location改用电脑安装的JDK的dt.jar
(即不使用myeclipse提供的dt.jar,我的值为:
C:
\Java6.014\lib\dt.jar)
经过以上的优化,myeclipse的启动时间可以减少2/3,Tomcat的启动速度可以减少1/2(视具体情况而定),
特别6,7两项的优化效果最明显,
如果只进行前5项,优化的效果有限,短期内确实可以提高启动速度,但是大概半个月后又会变的很慢(具体原因不明)
另外,使用myeclipse一段时间后,就会产生很多项目,即使这些项目是处于关闭状态,myecliose在启动时也会加载这些项目,这个过程会花费很多时间,所以,建议将不用的项目都delete掉,用的时候再import
eclipse调优
一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善。
加快启动速度
1.在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了。
(没设置时,等2-3s出现进度条,设置后直接出现进度条)
只要在eclipse.ini中加入-vm的参数就可以了
2.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作。
3.关闭自动更新
减少jvm内存回收引起的eclipse卡的问题
这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。
所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善。
主要通过以下的几个jvm参数来设置堆内存的:
-Xmx512m
最大总堆内存,一般设置为物理内存的1/4
-Xms512m
初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了
-Xmn192m
年轻带堆内存,sun官方推荐为整个堆的3/8
堆内存的组成
总堆内存=年轻带堆内存+年老带堆内存+持久带堆内存
年轻带堆内存
对象刚创建出来时放在这里
年老带堆内存
对象在被真正会回收之前会先放在这里
持久带堆内存
class文件,元数据等放在这里
-XX:
PermSize=128m
持久带堆的初始大小
-XX:
MaxPermSize=128m
持久带堆的最大大小,eclipse默认为256m。
如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了。
我的配置(2g内存的笔记本):
还有其它的相关参数可以看看下面的参考材料,很有启发的:
-XX:
+UseParallelGC使用并发内存回收
-XX:
+DisableExplicitGC禁用System.gc()的显示内存回收
eclipse相关设置来来减少卡的现象
1.关闭自动构建。
在启用时,每保存一下,eclipse就会自动为我们构建整个项目,这样对于大的项目来说,每次保存时都会造成很卡。
其实自动构建完全没有必要,只要保证在运行前构建一次就ok了,eclipse也会在运行前自动为我们构建,所以关闭是最明智的选择。
2.关闭拼写检查设置
3.关闭SaveAction。
在每次保存时都会执行的操作,这个会严重的拖慢保存,特别是文件大时。
这个其实只要自己养成良好的编程习惯,就完全不需要这个了。
4.优化代码提示。
5.eclipse按Ctrl键卡死的问题解决方法
在eclipse中编辑3万行左右的代码时,在用ctrl+c/v复制时eclipse经常会卡住较长的时间。
后来发现只要按下ctrl键就会卡,我猜测应该是因为eclipse中按住ctrl后可以用鼠标单击跳转到变量定义的地方,所以当按下ctrl键时eclipse会去生成这个映射,当文件比较大时,这个行为会花费比较多的时间,非常不爽,经过一番查找才知道,可以通过以下方法设置快捷键。
Eclipse--Windows->Preferences->General->Editors->TextEditors->Hyperlinking:
去掉这个选项:
Enableondemandhyperlinksstylenavigation
或者将你不想做Ctrl跳转的文件不选即可!
其它的优化链接
参考材料
jvm启动参数大全:
jvm结构的一些知识(其中的堆的构成):
jvm堆知识:
eclipse启动调优:
eclipse自带的helpcontents(搜索"RunningEclipse"可以找到启动相关的配置)
eclipse设置
eclipse的使用,在其help文件中都有详细的介绍如何使用的,一般可以去那边找。
代码折叠设置
快捷键设置
编译器错误、警告设置
本地历史设置
代码格式化设置
库设置
文本编辑器设置
让eclipse能启动多个实例
工作空间设置
xml编辑器设置
外观设置
代码格式化风格设置
鼠标over代码等时的提示设置
创建新文件时生成文件的模版设置
junitlauncher设置。
在开发android时,如果用eclipse内置的launcher是不行的,必须用android提供的。
eclipse使用
文件比较
Eclipse列编辑模式
Search功能(还有一个是Find/Replace)
一个文件打开多次,这样在你写代码时,需要参考文件的不同部分时,就不需要滚上滚下了
提取公共代码到私有的公共方法
eclipse显示启动时间的插件:
看这里
////////////////////////////////////////////////////////////
eclipsedebug使用部分
////////////////////////////////////////////////////////////
debug的variable界面显示初等变量的十六进制、ascii等形式
////////////////////////////////////////////////////////////
eclipse常见问题及解决
////////////////////////////////////////////////////////////
Eclipse3.7Indigo在Win7和Vista下面,文本编辑器字体不能改成CourierNew!
!
!
直接编辑
org.eclipse.jface_3.7.0.I20110522-1430.jar\org\eclipse\jface\resource\jfacefonts_windows7.properties
用XP里面的字体替换一下,重启Eclipse搞定。
修改完后,进入解压目录
>e:
>cdorg.eclipse.jface_3.7.0.I20110522-1430
然后打包所有的文件
jar-cfmorg.eclipse.jface_3.7.0.I20110522-1430.jar"META-INF/MANIFEST.MF""org/""META-INF/".api_descriptionabout.htmlplugin.properties
最后将该jar文件覆盖原来的,重启eclipse就ok了。
(在最后有做好的jar文件下载)
ExceptionincheckAndLoadTargetData.PermGenspace解决
Errornotifyingapreferencechangelistener
遇到该错误,说明eclipse的cdt插件太旧了,只要把plugin下的cdt相关的插件删除就可以解决这个问题。
英文网址:
启动Eclipse,提示“FailedtocreatetheJavaVirtualMachine”
可能是eclipse的配置文件eclipse/eclipse.ini
-Xms512m
-Xmx512m
中这两个参数设的过大了,设置一个小一点的值,比如256
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 myeclipse 不能 启动 问题