`
webdev2014
  • 浏览: 678006 次
文章分类
社区版块
存档分类
最新评论

Eclipse环境优化策略—配置参数

 
阅读更多

上篇博客讲述了写几篇博客的起因。同时也讲述了Eclipse的基本优化步骤, 若按照上篇博客优化了,若还不是特明显,咋办呢?

这篇博客就介绍,进一步优化策略——配置参数。

不知道你是否注意到Eclipse目录下*.ini文件呢?注意:不是workspace下,是软件安装目录或解压目录下。

一般情况下,咱们是不接触这个配置文件的;但是也许当你电脑上重新安装了JDK,发现Eclipse启动不起来了,这个时候需要折腾一下这个文件了,在此文件中配置启动Eclipse需要的jre。

不知道您是否遇到这个问题:OutOfMemoryError--内存溢出,当然内存溢出问题,首先要检查程序的问题,若程序一切正常,并且其他人机器一切正常,你是否开始要怀疑你的IDE的了?

确实,我就是遇到这种情况,Eclipse卡是一个问题,运行Eclipse占用1G,另外还有一个让人无法忍受的是:一次次蹦出OutOfMemoryError: PermGen space错误。

这种情况就需要好好优化*.ini文件。此文件中配置了VM所需的内存大小,可以调整VM的内存大小,加快运行速度。但是为了配置*.ini文件需要了解文件中的参数含义以及配置此参数的原因。

首先我们看一下jvm的内存图:


其中堆的组成如下:

-vmargs:说明后面是VM的参数
-Xms128m:虚拟机占用系统的最小内存
-Xmx512m:虚拟机占用系统的最大内存的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。

其中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 文档重复占用内存

那为什么会出现内存溢出呢?

因为你申请的空间要大于空闲的heap空间。

即使没有产生那么对象,也有可能会产生内存溢出,也许你继承的层次太深,因为堆中,首先要产生父类,然后再产生子类。

其中内存溢出OutOfMemoryError一般分为:java heap size;这是堆大小不足;另外一种是:PermGen space,永久存储区不足。PermGen space”是因为永久存储区满了,这个也很常见,一般在热发布的环境中出现,是因为每次发布应用系统都不重启,久而久之永久存储区中的死对象太多导致新对象无法申请内存,一般重新启动一下即可。

至于*ini配置文件参数设置,是根据自己机器物理内存中设置的。为了提升启动速度,把初始值和最大值,设置到900m,将近1G,同时把PermGen space增大。

根据以上配置,启动速度确实提升很多,其实并不是值越大,也快,而是一个适度值。


个人建议:若同样的项目,其他人正常,唯独自己慢。首先排除自己机器,若相同配置机器,则要考虑IDE坏境的问题,若IDE则优化也已经优化,还是publish特别慢,甚至敲一个空格,buliding、publish N长时间,则还要考虑项目问题。

若是team项目,你可以考虑重新download,或者考虑换一个IDE环境。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics