`

提高eclipse的运行效率、避免内存不足问题

阅读更多
我的eclipse用了一段时间后慢的要命,偶尔还崩溃的说。
错误提示:
MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommended that you exit and restart MyEclipse with new virtual machine memory paramters to increase this memory. Failure to do so can result in data loss. The recommended Eclipse memory parameters are: eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M


修改eclipse根目录下面的 eclipse.ini中的参数即可解决。

参数说明:
  • -vmargs:说明后面是VM的参数
  • -Xms128m:虚拟机占用系统的最小内存
  • -Xmx512m:虚拟机占用系统的最大内存
  • -XX:PermSize:最小堆大小。
  • -XX:MaxPermSize:最大堆大小。


如果有和我遇到了相同的问题,不妨把这些参数改大些。

我的电脑内存1G,我设置的参数为:
-vmargs  
-Xms128M  
-Xmx512M  
-XX:PermSize=128M  
-XX:MaxPermSize=256M


从网上的资料看PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。

PermGen space简介
  
  PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。
  
  说说为什么会内存益出:
  (1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
  (2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
  
  如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法: 手动设置MaxPermSize大小   
  修改TOMCAT_HOME/bin/catalina.bat,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:
   JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m


  建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存


参数的含义

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
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以上的处理器就不会有限制了。

为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:
-vm
C:\Java\jre1.6.0\bin\javaw.exe
按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:
-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=64M 
-XX:MaxPermSize=128M 

实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
-showsplash 
org.eclipse.platform 
--launcher.XXMaxPermSize 
256m 
-vmargs 
-Xms40m 
-Xmx256m 

其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。

其他的启动参数:

如果你有一个双核的CPU,也许可以尝试这个参数 -XX:+UseParallelGC

让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)

补充:

可以在myelipse里选中相应的服务器比如tomcat5,展开里面的JDK子项页面,来增加服务器启动的JVM参数设置:

-Xms128m 
-Xmx256m 
-XX:PermSize=128M 
-XX:MaxNewSize=256m 
-XX:MaxPermSize=256m





分享到:
评论

相关推荐

    解决 Eclipse内存不足的问题

    这个问题通常表现为Eclipse频繁弹出对话框,提示“Java虚拟机(JVM)运行时内存不足”,影响了开发效率。本文将详细介绍如何解决Eclipse内存不足的问题。 首先,我们需要理解为什么会出现这种情况。Eclipse在启动时...

    Eclipse运行工程内存溢出解决方法

    内存溢出(Out of Memory,OOM)是计算机编程和运行时常见的问题,尤其在Java这样的内存管理自动化的环境中。Eclipse作为一个流行的Java开发IDE...通过这些方法,可以提高Eclipse的运行效率,保证大型工程的稳定运行。

    eclipse和tomcat的内存配置

    ### Eclipse与Tomcat的内存配置详解 #### 一、引言 在开发环境中,合理配置Eclipse和Tomcat...总之,合理的内存配置不仅能提升开发效率,还能避免因内存不足导致的应用崩溃等问题,对于保障项目顺利进行具有重要意义。

    eclipse解决内存溢出的问题

    通过上述方法,我们可以有效地解决Eclipse中的内存溢出问题,从而提高开发效率和项目运行的稳定性。当然,根据实际情况灵活调整配置参数也是非常重要的。希望本文能帮助您解决实际工作中遇到的问题。

    eclipse内存优化

    因此,对Eclipse进行内存优化是一项必要的工作,以防止内存溢出等问题,从而提升其运行效率和稳定性。 #### 内存管理机制解析 理解Eclipse内存优化前,首先需了解Java虚拟机(JVM)的内存管理机制。JVM管理的内存...

    eclipse内存溢出的解决办法.txt

    在使用Eclipse开发工具的过程中,经常会出现“内存溢出”(Out of Memory Error)的问题,这主要是由于Eclipse运行时所分配的内存不足导致的。当出现这种情况时,不仅会影响开发效率,还可能造成项目的延误。本文将...

    Eclipse内存分配

    通过合理配置Eclipse及其JVM的内存参数,可以有效地避免内存不足等问题的发生。了解JVM内存管理的基本原理和配置方法对于提高开发效率和应用性能具有重要意义。希望本文能帮助读者更好地理解和解决与Eclipse内存分配...

    Eclipse + Tomcat 内存溢出参数设置

    2. **在Eclipse中配置JRE**:打开Eclipse,依次点击`Preferences -> Java -> Installed JREs -> JDK 1.6.0`,在`Default VM Arguments`中输入`-Xms256m -Xmx1024m`,指定Eclipse运行时的初始堆内存为256MB,最大堆...

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

    通过合理配置和优化,可以有效地提高MyEclipse的运行效率,确保开发过程的顺畅。记得每次更改配置后重启MyEclipse以使改动生效。希望这些信息能帮助你解决在使用MyEclipse过程中遇到的内存不足问题。

    eclipse下的tomcat内存设置大小

    当Tomcat运行时,如果内存分配不当,可能会出现“Out of Memory”错误,比如“gen space不够”的报错,通常指的是新生代内存不足。为避免这类问题,我们需要在启动Tomcat时指定适当的内存参数。 在Eclipse中设置...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    ### Eclipse Memory Analyzer (MAT) 分析 Tomcat 内存溢出详解 ...综上所述,正确使用 MAT 分析工具不仅能够帮助我们解决问题,还能提高开发效率和代码质量。希望本文对面临类似问题的开发者有所帮助。

    Eclipse 内存报错

    - **定期更新Eclipse**:官方更新通常包含性能改进和修复,有助于避免内存问题。 - **使用轻量级替代品**:如果Eclipse的内存需求过大,可以考虑使用更轻量级的Java IDE,如IntelliJ IDEA社区版。 了解并掌握这些...

    MyEclipse内存不足处理方案.txt

    ### MyEclipse内存不足处理方案 #### 背景与问题描述 在使用MyEclipse进行软件开发过程中,可能会...通过以上解决方案的应用,可以有效地解决MyEclipse在运行过程中出现的内存不足问题,提高开发效率和程序的稳定性。

    系统内存不足引起异常的解决方法

    在日常工作中,尤其是在进行软件开发或运行大型应用程序时,我们经常会遇到由于系统内存不足而导致的异常情况。其中最常见的异常之一就是`java.lang.OutOfMemoryError:Java heap space`。这类问题不仅会严重影响项目...

    flash builder 内存不足 无法加载设计模式

    标签“flash 内存不足 无法加载”表明这个问题不仅限于设计模式,可能还涉及到Flash内容的运行。在处理Flash内容时,确保优化代码,避免使用过大的SWF文件,也可以考虑使用Progressive Enhancement策略,逐步加载...

    eclipse内存溢出报错-解决办法

    然而,在使用过程中,用户可能会遇到“eclipse内存溢出报错”的问题,这一现象通常表现为Java.lang.OutOfMemoryError: Java heap space错误,这主要源于Eclipse运行时分配给Java虚拟机(JVM)的内存不足,导致程序...

    Eclipse设置、调优、使用详解

    Eclipse是Java开发者广泛使用的一款集成开发环境...通过仔细的配置和调优,可以显著提高Eclipse的启动速度和运行效率,提升开发效率。对于具体的参数值,应根据实际机器的配置和使用需求进行调整,以达到最佳的效果。

    ECLIPSE,TOMCAT,JVM内存设置

    标题 "ECLIPSE,TOMCAT,JVM内存设置" 涉及到的是在开发Java Web应用程序时,如何配置Eclipse集成开发环境(IDE)、Apache Tomcat服务器以及Java虚拟机(JVM)的内存参数,以优化性能和避免内存溢出等问题。...

    Eclipse 启动运行速度调优

    通过合理设置JVM参数,我们可以显著提高Eclipse的启动速度和运行效率。上述参数的选择需根据具体的硬件环境和开发需求来调整。此外,定期清理项目和优化开发环境也有助于保持Eclipse的良好性能。

    Eclipse初始安装配置及常见问题总结

    为了提升Eclipse的运行效率和稳定性,以下是一些优化建议: 1. **内存优化**:编辑eclipse.ini文件,调整-Xms和-Xmx参数,以匹配项目规模和个人电脑配置。初始化内存和最大可用内存的合理设置对于避免频繁的垃圾...

Global site tag (gtag.js) - Google Analytics