最近集群服务器中的几台服务器在半夜自动重启tomcat后一段时间便都会报java.lang.OutOfMemoryError: PermGen space。

习惯性的百度,得到的答案基本上都是统一的解决办法:

手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

可是这段代码已经在TOMCAT_HOME/bin/catalina.sh添加进去了(如下图),它还是依旧报的这个错误

经过对比正常的服务器的配置和catalina.sh的配置,终于发现了问题:

从上图我们可以看到,

“echo "Using CATALINA_BASE: $CATALINA_BASE"

这一行,以及新加入的

JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m -XX:PermSize=10240m -XX:MaxPermSize=20480m"

这一行是在一个if语句里面,if语句上面有它的注释

# Bugzilla 37848: only output this if we have a TTY

所以说当没有TTY的时候if里面的语句是不会执行的,也就是说,问题可能就出现在这里。

通过ps aux|grep tomcat命令后发现TTY那一列输出的是?,也就是说没有TTY,后面也没有打印出自定义的内存大小的信息,所以很明显if里面的语句没有执行到,还是默认的大小,所以java.lang.OutOfMemoryError: PermGen space

所以把加大内存配置的代码放在其它地方,然后修改一下系统时间,让tomcat重启一下,再通过ps aux|grep tomcat命令查看,启动参数已经有了修改的内存配置...一段时间后,tomcat也没有溢出,问题应该是解决了...

Reference:

[1] http://blog.csdn.net/userwyh/article/details/44563233

tomcat内存溢出:PermGen space解决方法的更多相关文章

  1. tomcat的OutOfMemoryError(PermGen space)解决方法

    修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: set J ...

  2. tomcat内存溢出 PermGen space

    1. java.lang.OutOfMemoryError: PermGen space  ---- PermGen space溢出.  PermGen space的全称是Permanent Gene ...

  3. linux中tomcat内存溢出PermGen space

    1.若是部署时候,一个tomcat下面项目越少越好,单独为一个项目配置tomcat(在客户给你充足的端口的情况下) 2.在维护的时候,若一个tomcat下放多个项目的话,这时候可以把所有jar包放在t ...

  4. Java虚拟机系列(三)---内存溢出情况及解决方法

    因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法 ...

  5. eclipse 运行报java.lang.OutOfMemoryError: PermGen space解决方法

    一.在window下eclipse里面Server挂的是tomcat6,一开始还是以为,tomcat配置的问题,后面发现,配置了tomcat里面的catalina.bat文件,加入 set JAVA_ ...

  6. eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法

    一.在window下eclipse里面Server挂的是tomcat6,一开始还是以为,tomcat配置的问题,后面发现,配置了tomcat里面的catalina.bat文件,加入 set JAVA_ ...

  7. Tomcat常见的内存溢出,以及解决方法

    一.常见的三种内存溢出错误: 1.java.lang.OutOfMemoryError:java heap space    ====JVM Heap(堆)溢出 JVM再启动的时候回自动设置JVM H ...

  8. 内存泄露java.lang.OutOfMemoryError: PermGen space解决方法

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...

  9. tomcat-内存溢出java.lang.OutOfMemoryErrory:PermGen space解决方法

    如果是PermGen space方法区内存溢出,可尝试加大MaxPermSize,如果是heap space 堆内存移除,可尝试修改Xmx 正常解决方法: 在注释下的第一行添加: JAVA_OPTS= ...

随机推荐

  1. javascript关于onclick()

    1 <html> <head> <title>js1 </title> <style> #content{ margin:0 auto; t ...

  2. opencv在同一窗口打印多张图片

    首先,由于cv2处理的图片是通过ndarray的格式操作的,也就是说通过array的拼接就可以实现图片的拼接,那么之后就可以通过简单的imshow将合并的图片打印从而达到在一个窗口中显示多张图片的目的 ...

  3. LINE 不被封锁的技巧

    什么是封锁? 谈LINE 被封锁之前,我们先来了解一下什么是封锁.LINE 的封锁分为「好友封锁你」与「官方封锁你」二种,有些人将官方封锁讲成「停权」,其实LINE 的停权并不是你的帐号全被封锁,被封 ...

  4. ios开发之--WKWebView的使用

    WKWebView是ios 8 出来的,是为了解决UIWebView卡慢,占用内存过大的问题. 在以往时候,如果用UIWebView加载加载网页的时候,卡慢现象会很严重,有时候往往会卡到一个页面无法动 ...

  5. 【Android】录音-amr音频录制

    http://www.cnblogs.com/fengzhblog/archive/2013/08/01/3231500.html http://blog.csdn.net/fan7983377/ar ...

  6. js 获取ISO-8601格式时间字符串的时间戳

    function getTimeStamp(isostr) { var parts = isostr.match(/\d+/g); return new Date(parts[0]+'-'+parts ...

  7. Hbase 管理页面

    进入Hbase首页可以查看各种信息: http://192.168.23.128:16010/master-status

  8. Win10 如何安装 Ubuntu

    在 Microsoft Store 中安装 Ubuntu ( 如下图1 ) 把开发者模式打开 ( 如下图2 ) 把 WSL ( Windows下的Linux子系统 ) 打开并重启电脑 ( 如下图3 )

  9. 手机CPU

    说起手机CPU的历史,笔者给大家提一个问题:"世界上第一款智能手机是什么呢?"相信很多人的答案是爱立信的R380或诺基亚的7650,但都不对,真正的首款智能手机是由摩托罗拉在200 ...

  10. phpQuery的用法

    一.phpQuery的hello word! 下面简单举例: include 'phpQuery.php'; phpQuery::newDocumentFile('http://www.phper.o ...