- 浏览: 2290320 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
参考资料
1 spring java.lang.OutOfMemoryError: PermGen space
http://hi.baidu.com/xjh0501/blog/item/a3d45b3b86309d28b8998f89.html
2 分析java.lang.OutOfMemoryError: PermGen space
http://www.iteye.com/topic/80620
3 bea jrockit的确是个生产应用的好平台
http://www.iteye.com/topic/148887
4 有兄弟使用过BEA的jrockit吗?
http://www.iteye.com/topic/235203
5 Linux平台的JVM性能评测
http://www.iteye.com/topic/5322
开发环境: Tomcat7+SUN JDK1.6出现这个问题,重启后等一会就要报这个错误!
换成:Tomcat6+BEA(SUN JDK1.5)一直没问题,还是不要用太高版本了呀!
引用文:
发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用CBLIB会动态产生很多类。
但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在Q&A很隐晦的回答了这一点,我们知道这个问题,但这个问题是由一个更基础的问题产生。
于是有人对更基础的JVM做了检查,发现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!
2003年的时候就有一个bug报告给sun,但是到现在,这个bug还没有close!有人在这个bug加了句评语:“A bug this critical is open since 2003? Absolutely shameful.” 我觉得SUN在这个BUG上确实有些丢脸。对这个bug最彻底的解决办法就是不要用SUN的JDK,而改用BEA的 JRokit. 打不过,还逃不过吗? 有众多的选择,这就是开源的好。 :)
总结如下:
1 修改jvm参数
-Xms 启动应用时,JVM堆空间的初始大小值。
-Xmx 应用运行中,JVM堆空间的极限值。为了不消耗扩大JVM堆控件分配的开销,将此参数和- Xms这个两个值设为相等,考虑到需要开线程,将此值设置为总内存的80%.
-Xmn 此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4。
永久存储区参数:
-XX:PermSize 应用服务器启动时,永久存储区的初始内存大
-XX:MaxPermSize 应用运行中,永久存储区的极限值。为了不消耗扩大JVM永久存储区分配 的开销,将此参数和-XX:PermSize这个两个值设为相等。
1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
windows下修改tomcat参数,方法一:
修改Catalina.bat文件
在“rem Execute Java with the applicable properties ”以下每行(共四处)
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JA
VA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%"
-Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCL
ASS% %CMD_LINE_ARGS% %ACTION%
中的%CATALINA_OPTS% 替换成-Xms800m -Xmx800m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=128m
2 对这个bug最彻底的解决办法就是不要用SUN的JDK,而改用BEA的 JRokit.
1 spring java.lang.OutOfMemoryError: PermGen space
http://hi.baidu.com/xjh0501/blog/item/a3d45b3b86309d28b8998f89.html
2 分析java.lang.OutOfMemoryError: PermGen space
http://www.iteye.com/topic/80620
3 bea jrockit的确是个生产应用的好平台
http://www.iteye.com/topic/148887
4 有兄弟使用过BEA的jrockit吗?
http://www.iteye.com/topic/235203
5 Linux平台的JVM性能评测
http://www.iteye.com/topic/5322
开发环境: Tomcat7+SUN JDK1.6出现这个问题,重启后等一会就要报这个错误!
换成:Tomcat6+BEA(SUN JDK1.5)一直没问题,还是不要用太高版本了呀!
引用文:
发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中的permanent heap溢出 。然后解决方法众说纷纭,有人说升级 tomcat版本到最新甚至干脆不用tomcat。还有人怀疑spring的问题,在spring论坛上讨论很激烈,因为spring在AOP时使用CBLIB会动态产生很多类。
但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?tomcat在Q&A很隐晦的回答了这一点,我们知道这个问题,但这个问题是由一个更基础的问题产生。
于是有人对更基础的JVM做了检查,发现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!
2003年的时候就有一个bug报告给sun,但是到现在,这个bug还没有close!有人在这个bug加了句评语:“A bug this critical is open since 2003? Absolutely shameful.” 我觉得SUN在这个BUG上确实有些丢脸。对这个bug最彻底的解决办法就是不要用SUN的JDK,而改用BEA的 JRokit. 打不过,还逃不过吗? 有众多的选择,这就是开源的好。 :)
总结如下:
1 修改jvm参数
-Xms 启动应用时,JVM堆空间的初始大小值。
-Xmx 应用运行中,JVM堆空间的极限值。为了不消耗扩大JVM堆控件分配的开销,将此参数和- Xms这个两个值设为相等,考虑到需要开线程,将此值设置为总内存的80%.
-Xmn 此参数硬性规定堆空间的新生代空间大小,推荐设为堆空间大小的1/4。
永久存储区参数:
-XX:PermSize 应用服务器启动时,永久存储区的初始内存大
-XX:MaxPermSize 应用运行中,永久存储区的极限值。为了不消耗扩大JVM永久存储区分配 的开销,将此参数和-XX:PermSize这个两个值设为相等。
1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
windows下修改tomcat参数,方法一:
修改Catalina.bat文件
在“rem Execute Java with the applicable properties ”以下每行(共四处)
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JA
VA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%"
-Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCL
ASS% %CMD_LINE_ARGS% %ACTION%
中的%CATALINA_OPTS% 替换成-Xms800m -Xmx800m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=128m
2 对这个bug最彻底的解决办法就是不要用SUN的JDK,而改用BEA的 JRokit.
发表评论
-
【转载】Eclipse Class Decompiler——Java反编译插件
2018-06-24 11:09 1360参见:jd-eclipse 的安装和使用(最新版的) h ... -
Java多线程序源码
2016-06-24 15:04 10401、《Java多线程编程核心技术》源代码(高洪岩) 2、Jav ... -
Spring & Junit
2016-05-27 13:18 7581 测试基类(BaseJunit4Test) import ... -
XSS之xssprotect
2012-12-07 23:03 29496参考资料 1 跨网站脚本 ... -
myeclispe之图解weblogic81配置
2011-11-07 10:11 1622一 创建Weblogic81域(如下图) 注意事项:一般 ... -
Cannot forward a response that is already committed
2011-09-07 09:43 5586参考资料 1 Cannot forward a respons ... -
WebLogic之Cannot parse POST parameters of request解决方法
2011-09-06 15:31 11347参考资料 1 关于Cannot parse POST para ... -
WebLogic之weblogic.xml.jaxp.RegistrySAXTransformerFactory
2011-08-16 16:46 8778参考资料 1 Thread: java.lang.ClassC ... -
Quartz之一个任务绑定多个触发器
2011-08-15 16:27 5025参见官方示例: SchedulerFactory sf = ... -
Quartz之QuartzInitializerListener
2011-08-15 15:12 7923问题:我想在WEB容器启动时就执行任务怎么办呢 Quartz: ... -
Quartz之QuartzInitializerServlet
2011-08-15 14:39 9266问题:我想在应用程序启动之后去执行任务怎么办呢! Quartz ... -
jQuery与Java实现图片的剪切
2011-08-05 15:10 30518一 参考资料 1 jquery Jcrop 头像,logo截图 ... -
WebLogic之Session
2011-07-25 13:15 24049参考资料 1 关于WebLogic的Session丢失的问题 ... -
Frameset导致Cookies和Session丢失的原因及解决办法
2011-07-25 12:28 4376参考资料 1 Frameset导致Cookies和Sessio ... -
java,javascript对18位身份证格式的验证算法
2011-07-12 14:15 7110参考资料 1 java实现的18位身份证格式验证算法 http ... -
Quartz之CronTrigger
2011-07-11 15:01 14724参考资料 1 quartz 学习笔记 http://china ... -
Quartz之CronExpression
2011-07-08 16:15 33778参考资料 1 Spring中任务调度(Quartz篇)-续-c ... -
Quartz之SimpleTrigger
2011-07-08 15:21 27245SimpleTrigger: 它只能用于指定任务在一个特定时间 ... -
Quartz2之入门示例
2011-07-07 17:12 79217环境:XP+Myeclipse6.5+JDK1.6 q ... -
Sprint之java.util.Time
2011-07-06 16:17 1691参考资料 1 在Spring中使用JDK Timer进行任务调 ...
相关推荐
java.lang.OutOfMemoryError: PermGen space 解决方案
总之,"java.lang.OutOfMemoryError: PermGen space"错误是由于Java虚拟机的 PermGen 区域内存不足造成的,可以通过增大 PermGen 区域的大小、升级JVM版本、优化类加载和库的使用等方式来解决。对于任何内存管理问题...
### Java.lang.OutOfMemoryError: PermGen space 及其解决方法 #### 一、PermGen space 概述 在Java虚拟机(JVM)中,PermGen space(永久代)是用于存储类的信息、常量、静态变量等数据的区域。在Java 8之前,Perm...
Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的解决方案 在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于...
在Java编程中,我们常常会遇到一个让人头疼的问题,那就是“java.lang.OutOfMemoryError: PermGen space”错误。这个错误提示表明,应用程序在运行过程中,内存的永久代(Permanent Generation)空间不足,导致了...
本文将针对两种常见的Java内存溢出错误——`java.lang.OutOfMemoryError: PermGen space`和`java.lang.OutOfMemoryError: Java heap space`进行详细的分析和解决方案的探讨。 首先,我们来看`java.lang....
tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space 参考该文档可快速解决内存溢出的问题,服务器:tomcat
通过以上方法,通常可以有效解决Myeclipse下出现的`java.lang.OutOfMemoryError: Java heap space`问题。需要注意的是,在调整JVM参数时应当根据实际情况合理设置,以免造成资源浪费或者性能下降。同时也要持续关注...
当应用程序加载大量类或者使用了大量的静态变量和常量时,PermGen space可能会耗尽,从而引发`java.lang.OutOfMemoryError: PermGen space`错误。对于频繁部署或重载JSP的Web应用,如Tomcat,这个问题尤为常见。 ...
4. **调整PermGen空间**:在Java 8之前, PermGen 区域用于存储类的元数据,如果这个区域耗尽,会出现`java.lang.OutOfMemoryError: PermGen space`错误。在Java 8中,这部分被MetaSpace取代,可通过`-XX:...
解决PermGen space错误的方法有多种,常见的有以下几种: 1. 增加PermGen space的大小。 2. 减少Class的数量。 3. 使用-XX:+CMSClassUnloadingEnabled选项来启用Class卸载机制。 java.lang.OutOfMemoryError是Java...
5. **增大PermGen或Metaspace大小**:如果你看到 `OutOfMemoryError: PermGen space` 或 `Metaspace`,这是方法区溢出,可以通过 `-XX:MaxPermSize` (对于老版本JVM) 或 `-XX:MaxMetaspaceSize` (对于Java 8及以后...
当JVM需要加载新的类而永久代空间不足以存放这些类信息时,就会抛出PermGen space错误。可通过调整-XX:MaxPermSize参数值增加永久代空间的大小。 4. 元空间内存溢出(Metaspace) 随着Java的发展,类元信息的存储...
- **解决方法**:Java 8之后,PermGen被Metaspace取代,处理方式类似。可以增加 Metaspace 的大小(`-XX:MaxMetaspaceSize`),或者限制加载的类数量,避免频繁加载新类。 在针对`OutofMemoryError`进行故障排查时...
特别是在Web应用环境下,如部署Web应用、使用JSP预编译等场景下,若配置不当,很容易触发`java.lang.OutOfMemoryError: PermGen space`异常。 #### 几个关键因素导致PermGen Space溢出: 1. **第三方库**:使用...
- **错误日志**:`java.lang.OutOfMemoryError: PermGen space` - **原因**:默认的PermGen大小有限,如果加载的类数量过多,超过了这个限制,就会发生溢出。 - **解决方案**:可以通过设置JVM启动参数增大Perm...
Java中的“内存不足OOM (Out Of Memory):java.lang.OutOfMemoryError”是一个常见的运行时错误,它表示Java虚拟机(JVM)在尝试分配新的对象或数据结构时,发现系统内存不足以完成此操作。这个问题通常发生在程序...