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
随机推荐
- 解决 java.lang.ClassNotFoundException配置文件出错的问题
出现的原因: 1.jar包没有导入 2.jar包有冲突 3.jar包没有同步发布到自己项目的lib目录中 解决方案: maven构建工程的方式:项目点击右键 点击 Properties 选择Deplo ...
- FEC
什么是FEC http://zhidao.baidu.com/link?url=sbk7ue4n75HCbumrznBlAwdZAII8ZK2Xp3HTJ5BRkLJtDLFN3MGp9KOlrHVp ...
- Activity生命周期以及启动模式对生命周期的影响(二)
前面一篇文章概述了Android四大组件之一的Activity生命周期方法的调用先后顺序,但对于非标准启动模式下Activity被多次调用时的一些生命周期方法并未详细阐述,现在针对该情况着重记录. 现 ...
- php遍历文件夹代码实现
<?php //遍历文件夹 function my_scandir($dir){ $files = array(); if (is_dir($dir)){ if($handle = opendi ...
- hibernate 一对多关联
package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistenc ...
- java分页功能代码
import java.util.ArrayList; import java.util.List; /** * * @author cheney * * @date Aug 31, 2012 */ ...
- iTunes 无法添加 iPhone 自定义铃声
本篇文章由:http://xinpure.com/itunes-unable-to-add-iphone-custom-ringtones/ 新版本 iTunes 需要在 菜单栏 -> 文件 中 ...
- Google两步验证安装使用方法
http://www.williamlong.info/archives/2754.html
- Bootstrap学习 进度条
本文将介绍Bootstrap进度条,在本文中你将看到如何使用Bootstrap创建加载,重定向或动作状态的进度条 bootstrap进度条使用CSS3过渡和动画来获得该效果.Internet Expl ...
- C# 上传文件大小限制设置
(1)在web.comfig文件中添加一个httpRuntime主键 <httpRuntime executionTimeout="90" maxRequestLength= ...