tomcat 内存溢出原因分析及解决
一、错误提示: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 内存溢出原因分析及解决的更多相关文章
- tomcat内存溢出 PermGen space
1. java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出. PermGen space的全称是Permanent Gene ...
- Tomcat内存溢出的三种情况及解决办法分析
Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...
- Tomcat 内存溢出对应解决方式
1.Tomcat内存溢出的原因 生产环境中Tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三 ...
- 大神的---解决tomcat内存溢出问题----tomcat报错:This is very likely to create a memory leak问题解决
tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...
- [转]一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序 ...
- myeclipse tomcat内存溢出解决方法
Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题.在 tomcat的catalina.bat ...
- eclipse启动tomcat内存溢出的解决方式
eclipse启动tomcat内存溢出的解决方式 ——IT唐伯虎 摘要:eclipse启动tomcat内存溢出的解决方式. 1.打开Run Configurations 2.在VM arguments ...
- linux中tomcat内存溢出解决办法
用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...
- 虚拟机选择配置:解决tomcat内存溢出
用于解决java.tomcat内存溢出:-server -XX:PermSize=128M -XX:MaxPermSize=256m
随机推荐
- 近期写的一个控件——Well Swipe beta 1.0
原文地址:http://blog.csdn.net/u013045971/article/details/51119507 近期花了大概一个半月的业余时间写的.从没有到有,中间也碰到了非常多的坑,一点 ...
- 二叉树(9)----打印二叉树中第K层的第M个节点,非递归算法
1.二叉树定义: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTree ...
- MVC入门教程二[第一个小Demo](转载)
本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 3.创建控制器 4.调试 5 ...
- SSL Pining Mode 设置iOS SSL 连接安全
一:SSL Ping Mode 使用SSL来进行网络通信成为了很多mobile app的默认选择.最近一些文章发现:一些app并没有采用“额外的措施”来保证窃听不可以发生:这个“额外的步骤“就是SSL ...
- python和c#通用一致的des加密采用CBC和PKCS7
在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/ 在c#下实现des加密较为简单,如下: using System; using System ...
- c++11 Using Callable Objects, std::thread, std::bind, std::async, std::call_once
- public_brokers
This page is an effort to list the publically-accessible MQTT brokers, often useful for testing and ...
- js 判断是否为mac电脑 、还是windows操作系统
/** * 是否为mac系统(包含iphone手机) * */ var isMac = function() { return /macintosh|mac os x/i.test(navigator ...
- Hibernate一级缓存和二级缓存具体解释
一.一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中.假设短时间内这个 session(一定要同一个ses ...
- WCF基础教程——vs2013创建wcf应用程序
引言 近期在项目中见到了师哥们常常谈到的WCF这方面的知识.当时在写程序的时候也没有理解wcf究竟是个什么东西? 以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格 ...