一、错误提示:java.lang.OutOfMemoryError: Java heap space

【原因分析】

tomcat默认可以使用内存为128MB,在较大型的应用项目中不足以满足运行要求,在日志中常出现内存溢出的错误,Out of Memory(系统内存不足)的异常,浏览器显示500错误,通常增加堆栈内存即可解决此问题。

【解决方法】

Windows 环境:

1)免安装版直接在catalina.bat文件头部增加以下行即可:

set JAVA_OPTS="-Xms256m -Xmx512m"

2)安装版tomcat因为使用的内存参数写在注册表中,可以直接修改注册表,也可以通过tomcat配置工具

Linux 环境:

直接在catalina.sh文件头部增加以下行即可:

JAVA_OPTS="-Xms256m -Xmx512m"

其中,-Xms设置初始化最小内存大小,-Xmx设置可以使用的最大内存大小,一般为了降低垃圾回收次数而影响性能这两个值设置相同值。

二、错误提示: java.lang.OutOfMemoryError: PermGen space

【原因分析】

PermGen space的全称是 Permanent Generation space,是指内存的永久保存区域,这块内存主要是被 JVM 存放 Class 和 Meta 信息的, Class 在被 Loader 时就会被放到 PermGen space 中, 它和存放类实例(Instance)的 Heap 区域不同, GC(Garbage Collection)垃圾回收不会在主程序运行期对 PermGen space 进行清理,所以如果你的应用中很多 Class 的话就可能导致 PermGen space 错误,这种错误常见在 Web 服务器对 JSP 进行 pre compile 的时候。 如果你的 WEB APP 下都用了大量的第三方jar, 其大小超过了 JVM 默认的大小(4M),那么就会产生此错误信息。

【解决方法】

Windows 环境:

1)免安装版tomcat在catalina.bat文件头部增加以下行即可():

set JAVA_OPTS="-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

2)安装版tomcat方法同第一种内存溢出解决方法相同

Linux 环境:

JAVA_OPTS="-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

三、错误提示:java.lang.StackOverflowError

【原因分析】

函数的调用过程都体现在堆栈和退栈上。调用构造函数的“层”太多,以至于把栈区溢出了。

一般栈区都远小于堆区,因为函数调用过程往往不会多于上千层,而即便每个函数调用要1K的空间,那么栈区也不过需要1MB的空间。通常栈区的大小是1-2MB。

递归也不要递归层数过多,也容易导致溢出。

【解决方法】

建议修改程序或更换较新版本的tomcat。

tomcat 内存溢出原因分析及解决的更多相关文章

  1. tomcat内存溢出 PermGen space

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

  2. Tomcat内存溢出的三种情况及解决办法分析

    Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...

  3. Tomcat 内存溢出对应解决方式

    1.Tomcat内存溢出的原因 生产环境中Tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三 ...

  4. 大神的---解决tomcat内存溢出问题----tomcat报错:This is very likely to create a memory leak问题解决

    tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因  在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...

  5. [转]一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序 ...

  6. myeclipse tomcat内存溢出解决方法

    Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题.在 tomcat的catalina.bat ...

  7. eclipse启动tomcat内存溢出的解决方式

    eclipse启动tomcat内存溢出的解决方式 ——IT唐伯虎 摘要:eclipse启动tomcat内存溢出的解决方式. 1.打开Run Configurations 2.在VM arguments ...

  8. linux中tomcat内存溢出解决办法

    用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...

  9. 虚拟机选择配置:解决tomcat内存溢出

    用于解决java.tomcat内存溢出:-server -XX:PermSize=128M -XX:MaxPermSize=256m

随机推荐

  1. Sqlite-Sqlite3中的数据类型

    大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的.刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列. Sqlite使用一个 ...

  2. js怎么获取图片的相对地址

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  3. vue组件属性中字符串如何拼接变量?

    不得不说,对于水平只有jquery的vue初学者来说,vue的图片加载实现确实挺坑的,在文档中也没有看到说明.经过百度之后终于知道了什么情况. 首先: 这样是没问题的: <img src=&qu ...

  4. 转:Android 签名验证机制(相当不错,强烈推荐)

    转:  http://riusksk.blogbus.com/logs/272154406.html Android应用签名验证过程中,满足以下条件才能安装应用: 1.SHA-1(除META-INF目 ...

  5. automake连载--Linux下使用automake入门

    http://blog.csdn.net/shanzhizi/article/details/30246587 近来重要要总结一下automake的用法了,连载几篇网上已有的文章,以供参考. 作为Li ...

  6. sublime text 2中“ctrl + `”快捷键无效

    之前sublime 使用正常,这次在装插件的时候,发现ctrl + `快捷键失效了,无法调出控制台. 然后就一直按这两个键,肯定是被别的占用了,所以就像看看有啥反应,看了半天都没有见到什么神奇的窗口跳 ...

  7. POJ1125 Stockbroker Grapevine 多源最短路

    题目大意 给定一个图,问从某一个顶点出发,到其它顶点的最短路的最大距离最短的情况下,是从哪个顶点出发?须要多久? (假设有人一直没有联络,输出disjoint) 解题思路 Floyd不解释 代码 #i ...

  8. 算法笔记_080:蓝桥杯练习 队列操作(Java)

    目录 1 问题描述 2 解决方案 1 问题描述 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行, ...

  9. STL源码剖析(deque)

    deque是一个双向开口的容器,在头尾两端进行元素的插入跟删除操作都有理想的时间复杂度. deque使用的是分段连续线性空间,它维护一个指针数组(T** map),其中每个指针指向一块连续线性空间. ...

  10. 【VBA编程】11.Application对象

    Application对象常用属性[ActiveCell属性]ActiveCell属性返回一个Range对象,表示当前窗口或指定窗口中的单元格.如果窗口没显示工作表,则此属性无效.[代码区域] Sub ...