zoukankan      html  css  js  c++  java
  • 解决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

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

  • 相关阅读:
    对函数的推广
    自然语言也支持泛型
    用委托实现对List的常用方法提取
    C#中的特性(Attributes)(翻译)(转)
    用JQUERY增删元素
    表格折叠展开
    下一代编程语言可能具有的特点
    一种多继承方案
    几年前毕业设计做的CAD二次开发
    数据结构 003.1.1 栈的基本概念
  • 原文地址:https://www.cnblogs.com/zj0208/p/6289362.html
Copyright © 2011-2022 走看看