• 解决eclipse报PermGen space异常的问题


    开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。

    PermGen space百度翻译为:永久区域内存不足

    1. 先来一张jvm结构图:

    内存不足问题一般都是发生在''上,GC作用区域也是在''上。

    2. 这个''又划分成了好几块区域,包括:

      新生代:包括伊甸园区和存活区。

      老年代

      永久带:jdk1.8后变成元空间,元空间不再占用堆中的空间,而永久带却是在堆中开辟空间。

     

    可以发现,中就有个永久区。永久区的内存溢出,其实就是堆的内存不够用。

    只需要调大的内存大小就可以解决问题。

    3. 调整堆大小的参数:

      -Xms256m -Xmx1024m

      -Xms:堆的初始化大小,这里设置成了256m.

      -Xmx:堆最大的大小,这个设置成了1024m.

      这里面就存在了一个可伸缩的空间,而这个空间的存在会损耗服务的性能。因为扩容和释放空间都是有性能损耗的。

      最好的办法就是:-Xms和-Xmx设置成同样的大小。这样就不存在可伸缩的空间了。

    4. jvm参数的配置位置。

      a. 如果是使用tomcat服务:

        修改tomcat/bin目录下的catalina.bat。(windows环境下修改文件catalina.bat, linux环境下修改文件catalina.sh)

        

         配置在文件的第一行: 

       b.如果是eclipse

        修改eclipse的Run Configurations。(如果是debug模式,修改Debug Configurations。)

        

        写在此处,方便拷贝:

        -Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

        

      c.如果已经被配置成了服务

        这种情况,就需要修改注册表了。

        c1. regedit命令打开注册表。

        c2. 找到配置的tomcat服务。

        

        修改:JvmMs,JvmMx,Options里面的参数值。

        c3. 修改完毕后需要重启服务。

      d. Eclipse的配置文件eclipse.ini中也可以配置jvm参数。

         

    -vmargs
    -Xms512m
    -Xmx1024m
    -XX:PermSize=256M 
    -XX:MaxPermSize=512M

     至此,内存溢出的问题应该就解决了。

  • 相关阅读:
    在eclipse中如何在大量项目中查找指定文件
    字体图标使用笔记
    微信扫码显示特效
    Flex 布局教程:实例篇
    Flex 布局教程:语法篇
    12月份前端资源分享
    什么样的技术能活下来?该如何筛选繁复的框架和工具
    web前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?
    2015前端生态发展回顾(转)
    HDU1507 Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/zj0208/p/6289362.html
Copyright © 2020-2023  润新知