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

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

  • 相关阅读:
    监听事件 队列 邮件发送
    elasticsearch 天气
    elasticsearch
    event 监听事件
    observer 监听的实现 laravel 框架
    中间件
    git 代码 上传到码云
    laravel 省略入口文件 index.php
    limit offset 和limit
    CSS变形和动画
  • 原文地址:https://www.cnblogs.com/zj0208/p/6289362.html
Copyright © 2011-2022 走看看