一、错误提示: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. 转: android sdk for mac

    转:http://www.cnblogs.com/yjmyzz/p/4219829.html 众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾andro ...

  2. [React] Detect user activity with a custom useIdle React Hook

    If the user hasn't used your application for a few minutes, you may want to log them out of the appl ...

  3. 使用JTextArea示例

    相对于JLabel显示提示文字,JTextArea有一个先天优势:文字可以拷贝出来.经过下面设置它也能在外观上和JLabel一致. 代码如下: JTextArea txtArea=new JTextA ...

  4. redis学习笔记——命令执行流程

    基础知识部分 如果需要掌握Redis的整个命令的执行过程,那么必须掌握一些基本的概念!否则根本看不懂,下面我就一些在我看来必备的基础知识进行总结,希望能为后面命令的整个执行过程做铺垫. 事件 Redi ...

  5. google,百度地图POI下载

    百度,google POI下载工具是可以对任意矩形范围,以及任意省市级区域的兴趣点数据进行下载,可以支持多线程下载,按分类下载,以及按关键字下载. 线程数可以自由设置16线程之内.下载格式为excel ...

  6. struts2结合poi-3.7实现数据导出为excel

    我们在处理数据的时候,有可能要将数据导出到excel文件中,那么java中是怎么实现的呢?apache开发的poi就可以帮我们实现啦,它也是开源的代码,导入相应的jar包,就可以轻松实现,下面让我们来 ...

  7. Android_WebView_全屏

    WebView(网络视图)能加载显示网页,能够将其视为一个浏览器. 它使用了WebKit渲染引擎加载显示网页,实现WebView有下面两种不同的方法: 第一种方法的步骤: 1.在要Activity中实 ...

  8. 关于JSP乱码问题

    关于jsp乱码问题的解决. 1 最基本的乱码问题. 这个乱码问题是最简单的乱码问题.一般新会出现.就是页面编码不一致导致的乱码. <%@ page language="java&quo ...

  9. jQuery-mobile 学习笔记之三(事件监听)

    续上 触摸事件 - 当用户触摸屏幕时触发(敲击和滑动) 滚动事件 - 当上下滚动时触发 方向事件 - 当设备垂直或水平旋转时触发 页面事件 - 当页面被显示.隐藏.创建.载入以及/或卸载时触发 一.初 ...

  10. 个人博客平台 http://craft6.cn 上线

    以后主要在该个人博客平台发表博文,有兴趣的读者可以访问: Craft6.cn 该博客是自主开发,功能和内容均在逐步增加中.所有文章均是原创.