出现了an internal error occurred during building workspace错误是内存溢出问题。可以通过修改myeclipse.ini文件解决,一例如下。
优化之后的ini文件内容:
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
C:\java\1.6\bin
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
以下为查找得的一些资料,解释我们在修改的参数是什么意思。
1.堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
2.堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
3.非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
4.JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
举例说明含义:
-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。
PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize缺省值和-server -client选项相关。-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m
PS:不同厂家的jdk垃圾回收算法不一样。在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率。
下面再简单的整理一下优化MyEclipse速度的主要方法:
1.修改myeclipse.ini。
2.取消自动validation
3.勾掉无用插件。
4.修改启动加载模块
下面附上详细的优化MyEclipse速度方法:(转载)
http://yufenfei.javaeye.com/blog/376464
http://blog.csdn.net/defonds/archive/2009/07/10/4338782.aspx
http://zhangpengshou.javaeye.com/blog/198476
http://queue19.javaeye.com/blog/488017
********************************************************************************************************************
MyEclipse6.5屏蔽jsp校验
myEclipse以其丰富的功能博得程序员的热爱,但是其速度确实有问题,jsp文件打开会不停的校验,甚至出现卡死,分析原因,
原来是validation在做怪。 好,既然找到了原因,那就把问题解决,方法如下: 打开Myeclipse—->window—>preferences
—>Myeclipse—>Validation build下除了 Classpath dependence validate 其他勾全部去掉。 这样它不会再去校验了。想校验
某个jsp文件如下操作:文件内容点右键—myeclipse—Run Validation 用了好多年myEclipse,现在刚发现可以这么解决,要
是能早发现,可以节约好多时间。
myeclipse 7.0
一、 Validation
Myeclipse,在校验的时候,默认会把web项目中的js、jsp都要校验。这样有很多不便。修改相关属性可以避免这个事情:
Window->preferences->MyEclipse->Validation。在这里,会看见一个列表,把列表中的Build列的复选框中除了“Classpath
Dependency Validator”外都取消,只保留手动manual复选框的选项。
这里会遇到的问题是:1、如果你已经加载了一个项目,项目中已经提示了很多error。那么可以右键你的项目->Myeclipse-
>Remove All Validation Markers。2、如果需要校验的时候可以右键你的文件->Myeclipse->run validation,如果run validation
是灰色的,可以通过manual Validation设置。
二、 拼写检查
拼写检查往往会导致我们某些习惯上的命名经常造成我们的视觉麻烦。取消,可能解决:Window->preferences->General-
>Editors->Text Editors->Spelling
三、 启动项
只选择自己需要的启动项,可以有效地节省资源:Window->preferences->General->Startup and Shutdown。
这里遇到的问题是,并不清楚所有的启动项的意义。这里稍做介绍:
WTP :类似myeclipse,不用的话可取消。
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消。
Derby:一种保存成 jar 形式的数据库,取消。
MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消。
四、 文件默认打开的方式
这里主要是应对编程者的要求,如果不是页面设计者,不需要打开一个网页页面的时候显示预览页面。Window->preferences
->General->Editors->File Associations 选择jsp、html的默认设成:jsp editor、html editor。
五、 代码提示快捷键
在myeclipse 7.0里已经不存在这个问题了。但是之前的某些版本里的快速提示仍然是ctrl+space,与输入法冲突(英文母语开发
不需要输入法转换)。Window->preferences->General->Keys 找到Context Assist 改成自己需要的,在7.0中是默认alt+/。
六、 JVM的非堆内存
让调试编译更流畅需要扩大堆内存:打开 myeclipse.ini 调大-XX:MaxPermSize=192M为512M。也有资料说要-XX ermSize 调成跟
-XX:MaxPermSize一样大。7.0后没有-XX ermSize了。要注意:XX:MaxPermSize、Xmx之和不能超过电脑内存。
七、 默认编码
1、 改变Eclipse或者MyEclipse新建文件的默认编码
eclipse的:
window-preferences-General-ContentType 改成utf-8。
myEclipse的:
window-preferences-myEclipse-files and editors-jsp encoding设成ISO10646/UTF-8.
2、 eclipse和java文件编码设定
Window->preferences->General->Workspace Text file encoding改为UTF-8。方便项目移植到linux下编写。
3、 项目编码
这里遇到的问题是,眼前的项目已经编写了大部分了,然而,只想接下来的新建的文件的编码是UTF-8,而以前的不变。那么右
键自己的项目-> roperties->Resource->Text file encoding改为UTF-8
4、 JSP编码
Window->myeclipse->Files and Editors->JSP、XML都在encoding中调节成UTF-8。
八、 代码自动提示功能
.net的代码提示功能在myeclipse里一样拥有。
Window->preferences->java->Editor->Content text中auto-Activation修改auto activation triggers for Java。默认的只有
一个“.”这里添加上二十六个英文字母外加“(,”左括号和逗号。7.0版本之前我貌似添加不了那么多,可以随便添加两个然后导
出配置修改配置文件然后再导入。
九、 MyEclipse添加javadoc
其实,7.0没有这个问题。因该是旧版本的问题:
按住CTRL,点击一方法时出现:
The jar file rt.jar has no source attachment.
You can attach the source by cliking Attack Source below:
解决方法:
因为rt的source在jdk目录的src.zip文件里,所以找到jdk目录下的src.zip就行了。一般MyEclipse没有src.zip.你要用到JDK安装包
的路径,比如你的JDK安装路径:C:Program FilesJavajdk1.5.0_15那就选择;C:Program FilesJavajdk1.5.0_15src.zip 即可
十、 修改editor中不同类型的文字的颜色
Window->preferences->java->Editor->syntax Coloring自己设。
增强MyEclipse的代码自动提示功能
一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本
身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能
一样能像Microsoft Visual Studio的代码提 示功能一样强大。
先举个简单的例子说明问题所在,例如在Eclipse ,MyEclipse代码里面,打个foreach,switch等这些,是无法得到代码提示的(
不信自己试试),其他的就更不用说了,而在Microsoft Visual Studio 里面是得到非常友好的代码提示的。实际上,Eclipse ,
MyEclipse代码里面的代码提示功能默认的一般是点“.”,一般是有了点“.”,才会有代码提示。
原理:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.” 改成
“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提示功能了。(具体后面有说,放
心)
增强Eclipse ,MyEclipse 的代码提示功能,具体怎么样来配置?
下面开始说步骤:
1. 打开MyEclipse ,然后“window”→“Preferences”
2. 选择“java”,展开,“Editor”,选择“Content Assist”。
3. 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项
。其实就是指触发代码提示的就是“.”这个符号。
4. “Auto Activation triggers for java”这个选项,在“.”后加abc字母,方便后面的查找 修改。然后“apply”,点击“OK”。
5. 然后,“File”→“Export”,在弹出的窗口中选择“Perferences”,点击“下一步”。
6. 选择导出文件路径,本人导出到桌面,输入“test”作为文件名,点击“保存”。
7. 在桌面找到刚在保存的文件“test.epf”,右键选择“用记事本打开”。
8. 可以看到很多配置MyEclipse 的信息
9. 按“ctrl + F”快捷键,输入“.abc”,点击“查找下一个”。
10. 查找到“.abc”的配置信息.
11. 把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,<”,保存,关闭“test.epf”。
12. 回到MyEclipse界面,“File”→“Import”,在弹出的窗口中选择“Perferences”,点击 “下一步”,选择刚在已经修改的
“test.epf”文件,点击“打开”,点击“Finish”。该步骤和上面的导出步骤类似。
13. 最后当然是进行代码测试了。
随便新建一个工程,新建一个类。在代码输入switch,foreach等进行测试。你立即会发现,果然出了提示,而且无论是敲哪个字
母都会有很多相关的提示了,很流畅,很方便。
总结:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.”改成
“.abcdefghijklmnopqrstuvwxyz(,”的意思,就是指遇到26个字母和.,(这些符号就触发代码提示功 能了。
顺便说一下,修改类名,接口名等以不同颜色高亮的,可以这样配置在“java”→“enditor”→ “syntac”,右边展开“java”
→“classes”,勾上“Enable”这个选项,选择自己喜欢的颜色即可。当然还有其他相关的颜色配置。具体就不说啦。其实,在
“Preferences”这个东西,有很多可以配置的东西,使得MyEclipse 优化的,具体的就要各个人根据自己个人喜好去配置了。
**************************************************************************************************************
myeclipse启动时会去加载一些模块,检查一些插件是否需要更新还有工作空间的建立等等,所以启动时会显得比较慢,单知道这些后我们可以针对其进行优化
1、去除不需要加载的模块
一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,所以可以将一些不使用的模块禁止 加载启动。通过Windows - Preferences打开配置窗口,依次选择左侧的General - Startup and Shutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块。
windows–>perferences–>general–>startup and shutdown
关掉没用的启动项:
WTP :一个跟myeclipse差不多的东西,主要差别是 WTP 是免费的,如果使用myeclipse,这个可以取消
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消
Derby:一种保存成 jar 形式的数据库,我没用到,取消
一大排以 MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消,比如我只选了tomcat6.x
2、取消MyEclipse在启动时自动验证项目配置文件
默认情况下MyEclipse在启动的时候会自动验证每个项目的配置文件,这是一个非常耗时的过程,
可以在Preferences窗口依次选择 MyEclipse Enterprise Workbench - Validation,然后在右侧的Validator列表中只保留 Manual 项就可以了(Manual全部勾选,Bulid项只留下第一项)。
如果需要验证的时候只需要选中文件,然后右键选择 MyEclipse - Run Validation就可以了。
windows–>perferences–>myeclipse–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Validator
手工验证方法:
在要验证的文件上,单击鼠标右键–>myeclipse–>run validation
3、去掉拼写检查(如果你觉的有用可以不去)
拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,所以最好去掉,没有多大的用处:
windows–>perferences–>general–>validation->editors->Text Editors->spelling
myeclipse 打开 jsp 的默认编辑器不好,会同时打开预览
windows–>perferences–>general–>editors->file associations,
把默认改成 MyEclipse JSP Editor()
原默认的jsp编辑器是 MyEclipse Visual JSP Designer,顾名思义,此编译器是jsp可视化编辑器,对于初学者有很多的帮助,
但修改此项的默认编辑器其实可以提高启动速度)
4、关闭自动更新
如果是myeclipse7.5:
(1)关掉maven自动更新:
window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven,
关闭所有Download和Update开头的选项,共四项(去掉前面的勾)
(2)关闭更新调度:window –> preferences –> General –> Startup and Shutdown –> Automatic Updates Scheduler(去掉前面的勾)
(3)window –> preferences –>Myeclipse Dashboard,关闭Show……on start
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-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven,将Maven JDK改为电脑上安装的JDK,即不使用myeclipse提高的JDK
登记add按钮,选择你的电脑上的JDK即可(注意:不是JRE,我的值为:Java6.014)
7、window-preferences-MyEclipse Enterprise Workbench-Matisse4Myeclipse/Swing,将Design-time information(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