`
Franciswmf
  • 浏览: 796865 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

MyEclipse启动太慢(内存溢出)解决方案

 
阅读更多

MyEclipse内存溢出问题(an internal error occurred during building workspace)           

出现了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

分享到:
评论

相关推荐

    myeclipse内存溢出问题解决方案

    总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。

    myeclipse-tomcat jdk内存溢出

    ### MyEclipse-Tomcat JDK 内存溢出问题及解决方案 #### 一、问题概述 在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,...

    myeclipse内存溢出解决方法

    以下是一些解决MyEclipse内存溢出问题的方法: 1. 修改`eclipse.ini`配置文件: MyEclipse的启动配置文件`eclipse.ini`位于MyEclipse安装目录下的特定路径,例如`G:\MyEclipse8.5\Genuitec\MyEclipse 8.5`。在这个...

    myeclipse内存溢出问题

    ### MyEclipse内存溢出问题解析与解决策略 #### 一、问题背景 在使用MyEclipse集成开发环境(IDE)进行项目开发时,开发者可能会遇到内存溢出的问题。这通常表现为应用程序运行过程中突然出现错误提示,导致程序...

    MyEclipse 内存溢出

    【描述】虽然描述部分为空,但通常内存溢出问题可能与MyEclipse的启动配置有关。开发者在运行大型项目时,如果没有正确设置JVM参数,尤其是内存分配参数(如-Xms, -Xmx, -XX:MaxPermSize等),就可能导致内存溢出。...

    解决MyEclipse运行项目内存溢出问题(原创-手写)

    解决MyEclipse运行项目内存溢出问题,下载后是个txt文件,里面包含了解决的步骤

    MyEclipse经常报内存不足解决方案

    解决MyEclipse内存不足的首要步骤是调整JVM的内存参数。这些参数通常在MyEclipse的启动配置中设置,包括初始堆大小(Xms)、最大堆大小(Xmx)以及 PermGen 空间(对于较旧版本的Java)。在MyEclipse的安装目录下,...

    Myeclipse启动慢解决方法

    【MyEclipse启动慢的解决方法】 MyEclipse是一款强大的集成开发环境,但在使用过程中,有时会出现启动缓慢的问题,这可能影响开发效率。以下是一些优化MyEclipse启动速度的方法: 1. **去除不需要加载的模块** ...

    MyEclipse运行太慢 解决方案

    ### MyEclipse 运行太慢的解决方案 在开发过程中,很多开发者会遇到 MyEclipse 运行缓慢的问题,这不仅降低了工作效率,还可能影响到整个项目的进度。本文将详细介绍几种有效的解决方法来提高 MyEclipse 的运行速度...

    MyEclipse下tomcat日志输出和内存溢出解决方法.doc

    ### MyEclipse下Tomcat日志输出和内存溢出解决方法 #### 一、问题背景与概述 在使用MyEclipse进行开发时,经常会遇到Tomcat服务器启动后,在部署SSH(Struts+Spring+Hibernate)项目多次后出现崩溃的情况。这通常...

    myeclipse 8.5运行慢的解决方案

    以上解决方案综合考虑了MyEclipse的内存管理、功能模块选择、项目配置验证、编辑器行为调整以及Javadoc location的优化,旨在帮助用户克服MyEclipse运行缓慢的困扰,提升开发效率。通过对这些关键点的合理调整,即使...

    MyEclipse内存不足处理方案.txt

    ### MyEclipse内存不足处理方案 #### 背景与问题描述 在使用MyEclipse进行软件开发过程中,可能会遇到由于内存不足导致的各种问题。例如,当MyEclipse检测到永久代(Perm Gen,非堆内存)剩余空间少于5%时,会提示...

    myeclipse 解决内存的问题

    #### 二、MyEclipse内存问题成因分析 1. **自动更新检查**:MyEclipse默认会在启动时检查是否有新功能或更新,这一过程会占用一定的系统资源。 2. **索引更新**:MyEclipse会定期更新项目依赖的索引,这个过程同样...

    优化MyEclipse启动速度

    【优化MyEclipse启动速度】是一项提升开发效率的重要工作,因为快速启动的IDE可以节省开发者的时间,更快地投入到编码工作中。以下是一些针对MyEclipse启动速度优化的关键点: 1. **关闭自动验证**:在`Windows &gt; ...

    优化MyEclipse速度

    然而,由于其全面的功能,MyEclipse在启动时可能会消耗大量的系统资源,导致启动速度慢,影响开发效率。为了解决这一问题,我们可以采取一系列优化措施来提升MyEclipse的运行速度。 1. **禁用不必要的插件和服务**...

    解决myeclipse8.6 启动缓慢

    4. **系统性能**:如果你的计算机硬件配置较低,比如CPU速度慢,内存小,硬盘读写速度慢,那么MyEclipse的启动速度自然会受到影响。升级硬件或优化系统设置,如启用固态硬盘,都能提升启动速度。 5. **启动优化**:...

    打造极速MyEclipse+由MyEclipse内存不足谈谈JVM内存

    然而,随着项目规模的扩大,MyEclipse可能会遇到内存不足的问题,这将导致启动缓慢、卡顿甚至崩溃。解决这个问题的关键在于理解和优化JVM(Java Virtual Machine)内存设置。 JVM是Java程序运行的基础,它负责解析...

    解决MyEclipse下启动项目时JBoss内存溢出的问题

    本文将详细介绍如何解决MyEclipse中启动JBoss项目时遇到的内存溢出问题。 首先,我们需要理解JVM内存模型。JVM内存主要分为几个区域:堆(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(PC Register)...

    MyEclipse启动和运行速度优化

    在日常开发过程中,我们经常会遇到MyEclipse启动慢、运行卡顿等问题,这不仅影响工作效率,还可能导致代码编辑和调试效率降低。本文将针对这些问题提供一系列优化建议,帮助提升MyEclipse的启动速度和运行效率。 ##...

Global site tag (gtag.js) - Google Analytics