Tomcat死机报OutOfMemoryError: PermGen space错误
最近,用户没怎么使用系统,页面就卡死,访问不了。仔细一看是Tomcat假死,好几次都这样。重启也慢的很,很着急。最后,看了下 conf/logs 里的配置文件,发现是 OutOfMemoryError: PermGen space 错误,就百度了下。
从 这篇文章 了解到:应该是系统在导出在数据量很大的文件时,出现了内存溢出的错误。回忆一下,系统中在很多地方,确实有导出大量数据为 Excel 的地方。
抛出异常:
Exception in thread "http-80-114" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-115" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-116" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-117" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-118" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-80-119" java.lang.OutOfMemoryError: PermGen space找到了原因,问题就好解决了,修改jvm的内存大小就ok,不知道后面还会不会有问题,再看了。
抛出异常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)那么就会产生此错误信息了。
解决方法:手动设置MaxPermSize大小。网上多为修改配置文件的方式。我的操作系统是windows2003, 用tomcat本身提供的工具(Configure Tomcat)就可以设置。如下图所示,在java options中加入红色方框中的两行语句即可。通过命令行参数-XX:PermSize和-XX:MaxPermSize设置该区域的大小,数值应根据机器实际内存大小来定。注:每行命令前后不要有空格,否则会导致tomcat启动失败。
具体大小可以按照如下配置:(具体见这篇文章)
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
那么,如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;
四分之一是1024MB,这就是MaxPermSize默认大小。
2014年2月18日 19:41:37更新:
该文章纯粹瞎扯,没有什么 1/64 之说,害我搞这么久。
我的服务器内存 8G,照上文 1/64 默认是256M,和 1/4 2048M。这是默认,默认配置不是爆出 OutOfMemoryError 错误么,所以我就把这2个设置都翻了个倍,结果 Tomcat 运行不起来!!!
最 后百度无奈的百度其它方案,最后选择 如上图图片中的大小:128M 和 512M ,结果 Tomcat 才运行起来!
Tomcat死机报OutOfMemoryError: PermGen space错误的更多相关文章
- windows系统bat方式启动tomcat出现java.lang.OutOfmemoryError:PermGen Space 错误
1.问题情景: 在部署项目时,将两个应用部署到同一个tomcat下,通过startup.bat启动服务时,控制台出现出现java.lang.OutOfmemoryError:PermGen Space ...
- [转]Tomcat启动java.lang.OutOfMemoryError: PermGen space错误解决
原文地址:http://outofmemory.cn/java/OutOfMemoryError/outofmemoryerror-permgen-space-in-tomcat-with-eclip ...
- 出现 java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法
一.原因及解决方法[1] 1.原因:堆内存的永久保存去区内存分配不足(缺省默认为64M),导致内存溢出错误. 2.解决方法:重新分配内存大小,-Xms1024M -Xmx2048M -XX:PermS ...
- java中程序上线报错: tomcat中java.lang.OutOfMemoryError: PermGen space
在程序测试没问题之后,上线试运行,在运行的过程中某个功能一点击就报如下错,然后重启服务器就好了,一会又是如此,解决方法如下(亲测) PermGen space的全称是Permanent Generat ...
- myeclipse tomcat java.lang.OutOfMemoryError: PermGen space错误的解决方法
错误代码: java.lang.OutOfMemoryError: PermGen space 原因分析: myeclipse或tomcat的内容分配的不够用,启动失败 解决方法: 1.找到tomca ...
- tomcat服务器java.lang.OutOfMemoryError: PermGen space
一挂就报内存溢出 下面是TOMCAT日志 JAVA程序是没有报错, Nov 24, 2009 4:07:02 PM org.apache.catalina.core.ApplicationDispat ...
- JMeter-java.lang.OutOfMemoryError: PermGen space错误
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...
- java.lang.OutOfMemoryError: PermGen space错误解决方法
1. MyEclipse 中报 PermGen space window--> preferences-->Myclipse-->Servers-->Tomcat- ...
- Tomcat发生java.lang.OutOfMemoryError: PermGen space的解决方案
产生该问题的主要原因是JVM永久带空间不足导致的,可以在环境变量CATALINA_OPTS中提高MaxPermSize参数值 set CATALINA_OPTS = -XX:PermSize=12 ...
随机推荐
- 为什么选择我--ReactJS
在页面中如何大面积操作DOM的话,性能肯定是一个很大的问题,然而聪明的ReactJS实现了Virtual DOM技术,这是他的亮点之一.将组件的DOM结构映射到这个Virtual DOM对象上,并且R ...
- C# 里窗体里(windows form)怎么播放音乐
在.NET的winform里面,没有托管的音乐播放器,API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于 MediaPlayer里,嘿嘿 使用的方法: 在toolbox上点右键,选择“选 ...
- What and where are the stack and heap?
The stack is the memory set aside as scratch space for a thread of execution. When a function is cal ...
- basicAnimation移动图形
目的:采用CABasicAnimation 点击屏幕上的点来是实现图像的位置移动 并且位置能够不反弹 难点:1 通过动画的KeyPath找到layer的属性 2 通过NSValue将点包装成对象 ...
- 330. Patching Array--Avota
问题描述: Given a sorted positive integer array nums and an integer n, add/patch elements to the array s ...
- 【BZOJ1146】【树链剖分+平衡树】网络管理Network
Description M 公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通 信网络.该网络的结构由N个 ...
- Queue学习
Queue在Python中可以算作是一种容器,但是他和list,set,dict不一样. 1. Queue不是Python内置类型.它在Queue模块中定义. 2. 它不是iterator容器,他不能 ...
- 泛型? extents super
?可以接受任何泛型集合,但是不能编辑集合值.所以一般只在方法参数中用 例子: ? extends Number 则类型只能是Number类的子孙类 ? super String 则类型只能是Str ...
- 学习笔记--【转】Parameter与Attribute的区别&servletContext与ServletConfig区别
原文链接http://blog.csdn.net/saygoodbyetoyou/article/details/9006001 Parameter与Attribute的区别 request. ...
- utf8汉字编码16进制对照
utf8汉字编码16进制对照 GB Unicode UTF-8 Chinese Character Code code# Code (coded in UT ...