广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Eclipse内存溢出怎么办解决eclipse溢出设置

    来源:网络收集  点击:  时间:2024-03-04
    【导读】:
    这里需要解释为什么会内存益出:(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 文档重复占用内存1。参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M堆内存分配JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。JVM内存限制(最大值)首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。工具/原料moreEclipse内存溢出 Eclipse开发比较大的java工程方法/步骤1/8分步阅读

    解决第一步,为什么会出现这种错误?

    (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)那么就会产生此错误信息了。显然需要配置内存了

    2/8

    解决第二步,解决这个问题之前,首先找到出现问题的出处。就需要在D:\rootpackage\Eclipse\adt64\eclipse里面找到eclipse的配置,eclipse.ini的文件里面。找到之后需要双击打开。我们来看看一下这里的内容。

    3/8

    解决第三步,通过解决第二步,后面的双击之后,然后看到这个这个内容,把你的配置文件改成如下的内容。完成之后然后就可以重启eclipse,就不会爆出这个内存错误了。因为出错的源泉已经解决了

    4/8

    未解决的话,问题严重第一步,如如果不解决的话,那么这个提示就会不停的弹出和这个提示,因为这个我们开发的java工程实在太大,所以需要eclipse调用的内存还需要太大,默认的配置已经不能满足需求,所以需要修改。

    5/8

    未解决的话,问题严重第二步,如图所示在这里的配置,如果不起作用的话,那么就只能配置eclipse.ini的了,这里涉及的内存机理需要好好配置学习。

    6/8

    未解决的话,问题严重第三步,如图所示,因为eclipse的配置不好的话,就会卡住,如图所示,不停的提示,而且电脑出现宕机,不能操作。如果打开资源管理器,就会出现这个eclipse出现不响应。

    7/8

    解决之后总结原理

    内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出。如果出现这种现象可行代码排查:

    一)是否App中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static String str;

    二)是否App中使用了大量的递归或无限递归(递归中用到了大量的建新的对象)

    三)是否App中使用了大量循环或死循环(循环中用到了大量的新建的对象)

    四)检查App中是否使用了向数据库查询所有记录的方法。即一次性全部查询的方法,如果数据量超过10万多条了,就可能会造成内存溢出。所以在查询时应采用“分页查询”。

    五)检查是否有数组,List,Map中存放的是对象的引用而不是对象,因为这些引用会让对应的对象不能被释放。会大量存储在内存中。

    六)检查是否使用了“非字面量字符串进行+”的操作。因为String类的内容是不可变的,每次运行+就会产生新的对象,如果过多会造成新String对象过多,从而导致JVM没有及时回收而出现内存溢出。

    8/8

    eclipse.ini配置文件代表意思:

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

    出现问题是因为eclipse 的内存设置太小.

    -XX:PermSize=512M -XX:MaxPermSize=1024M

    注意事项

    eclipse内存俩种配置,一个是eclipse.ini和JVM 的setting

    修改一下数字就可以解决了

    ECLIPSEECLIPSE溢出内存溢出
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_238821.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 00:04:27  耗时:0.027
    0.0273s