`

JBoss内存溢出处理

阅读更多
前几天公司一个项目的服务器坏了,就换了一个备份服务器顶替一下,但是没有跑一会就宕机了,一直报java.lang.OutOfMemoryError。。。。一看到这里,就知道是内存溢出,但是JBoss的内存配置已经达到1024M了,而且对JBoss内存的监测结果看,并不高,怎么会死机呢,好奇怪。搞了半天还是没有结果。郁闷~~~~

     到了最后,已经绝望了我,打算换一个JBoss版本,再换一个JDK,看看是不是这些的问题。但是再换以前,我就把日志又重新看了一次,发现一个问题。报的java.lang.OutOfMemoryError后面还有内容:java.lang.OutOfMemoryError: PermGen space,这个好像和java.lang.OutOfMemoryError: Java heap space这个不一样。最后找了一下这个异常!

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

改正方法,在 run.bat 中加入:-Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
因为项目中引用了很多的 jar 包,而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域,在 JVM 默认的情况下,该部分空间的大小只有 4M,在 jar 包非常多的情况下,显然是不够用的,所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。

我的JBoss里面装载了6个应用,jar包和class加起来有100m左右,配上这个参数后,一切OK,最后服务器修好以后,发现,这个里面的JBoss也是这么来配置的,哎~~看来以后备份,最好还是吧JBoss一起备份出来吧!
而当出现出现 java.lang.OutOfMemoryError: Java heap space 这个异常时,通过调节-Xms512m -Xmx1024m这个就可以解决。
另外,这个两个参数 -XX:+UseParallelGC -XX:+UseParallelOldGC 让服务并行回收内存空间。但是,这两个参数配置上去以后,也会占用一定的内存空间。
分享到:
评论
1 楼 sfrost 2011-11-08  

相当不错的故障排查。

相关推荐

    JBOSS\Tomcat最大连接数配置和jvm内存配置.docx

    在实际操作中,我们需要根据服务器的硬件资源、应用的特性以及预期的并发量来灵活调整这些参数,以确保服务器的高效运行和防止内存溢出(OutOfMemoryError)。内存溢出通常有两类:`PermGen space`(永久代溢出)和`...

    jboss4.3 起步指南

    - **内存管理**:合理设置JVM参数,如初始堆大小、最大堆大小等,以避免因内存溢出导致的服务中断。 - **线程池配置**:通过调整线程池大小,可以有效提升系统响应速度。 - **监控工具集成**:利用JConsole等工具对...

    TOMCAT内存溢出及大小调整的实现方法

    随着应用的日渐复杂,处理的数据量和业务逻辑的增多,Tomcat服务器可能会遇到内存溢出的问题,常见的异常为java.lang.OutOfMemoryError。本文将介绍Tomcat内存溢出的原因、常见情况以及如何调整内存大小以预防和解决...

    JBossCache_讲解说明

    此外,它还支持缓存的钝化功能,即当缓存运行时内存溢出,可以将数据转存到磁盘,以及实现缓存数据的预加载,加速系统的启动过程。 2. **驱逐策略**:为了防止服务器内存资源被耗尽,JBoss Cache采用了多种驱逐策略...

    JBoss422集群配置指南(01)

    集群配置是提升JBoss服务器可扩展性和高可用性的重要手段,尤其对于处理大量并发请求和保证服务连续性至关重要。本指南将深入讲解JBoss4.2.2的集群配置,旨在帮助初学者掌握企业级系统性能优化策略。 一、集群概念...

    JBOSS集群........

    - **优化内存使用**:合理设置最大会话数量和超时时间,以避免内存溢出。 - **网络带宽优化**:根据实际情况调整会话复制频率,以减少网络负载。 #### 八、农耕(Farming) - **定义**:农耕是一种将任务分散到...

    Java内存不足PermGen space错误探究.pdf

    在Java 8之后,永久代被移除,其功能被元空间(Metaspace)取代,以减少内存溢出问题。 当出现PermGen space错误时,通常有以下几种情况: 1. 应用程序加载了大量的类,导致永久代内存不足。 2. 在单个Tomcat实例...

    java大字段转换

    处理大字段时需要特别注意内存管理,因为它们可能导致内存溢出(Out Of Memory)问题,影响应用的性能和稳定性。这篇博客文章可能详细探讨了如何在Java中有效地处理大字段,以及可能遇到的相关挑战。 1. **大字段...

    java中(注解符)处理Clob(blob)类型

    * 数据太大:如果数据太大,可能会导致内存溢出或性能问题。 * 读取和写入性能:读取和写入 Clob 和 Blob 类型的数据可能会影响性能。 五、参考文献 * Spring 框架文档:...

    Java性能监控工具

    在遇到内存溢出问题时,我们经常使用`jmap -dump`来捕获堆内存快照,以便后续分析。 `jstack`提供了线程堆栈的快照,帮助我们诊断线程死锁或其他线程相关的问题。在Linux环境下,`jstack -l`会提供更详尽的信息。 ...

    SERVLET 上传文件原理,Cache-Contro,java编码,jbpm原理

    注意,处理大文件时,要考虑到内存管理和流式处理以避免内存溢出。 Cache-Control: `Cache-Control`是HTTP头中的一个字段,用于控制缓存行为。它允许服务器指示浏览器或其他代理如何缓存响应。常见的值有`no-cache...

    实战JAVA虚拟机随书源码

    1. 堆内存溢出:源码中可能包含模拟堆内存溢出的场景,帮助我们理解如何通过JVM参数调整堆大小,以及如何使用JConsole、VisualVM等工具识别和解决此类问题。 2. 线程死锁:学习如何通过`jstack`命令查看线程状态,...

    关于session丢失问题

    3. **服务器重启或内存溢出**:当服务器重启或内存不足时,存储在服务器内存中的Session数据会丢失。 4. **负载均衡或集群环境**:在多台服务器组成的集群环境中,如果没有实现Session共享,用户可能被重定向到没有...

    elearning性能测试总结报告

    - **问题5**:Java内存溢出错误,PermGen空间不足。调整JVM参数,包括增加堆内存、栈大小,调整PermGen空间,优化了Java应用的内存管理。 - **问题6**:JBoss日志显示所有线程繁忙。通过调整JBoss AJP Connector的...

    netty api文档

    9. **回压控制**:Netty提供了回压控制机制,避免下游处理速度慢导致的缓冲区溢出问题。 10. **ChannelFuture和Promise**:这些异步编程工具允许开发者以链式调用方式构建复杂的异步操作流程。 在`netty-4.1.0.CHM...

    hibernat优化攻略

    - 一级缓存(SESSION缓存):默认开启,注意在大量操作后适时清理,防止内存溢出。 - 二级缓存:适用于不常更新的数据,需根据业务需求选择合适的缓存策略(read-only、nonstrict-read-write、read-write、...

    线上问题排查工具和手段

    例如,在案例一中,通过监控工具发现系统压测6个小时后出现了OOM(内存溢出)异常。在案例二中,观察到服务器load过高,有宕机的趋势。通过日志分析、监控数据和使用各种系统工具,可以找到问题的根本原因,从而采取...

    生产环境jvm调优的实例代码-jvm.zip

    6. **JVM性能日志与分析**:通过`-XX:+PrintFlagsFinal`查看默认JVM配置,`-XX:+PrintGC`和`-XX:+PrintGCDetails`记录GC日志,`-XX:+HeapDumpOnOutOfMemoryError`在内存溢出时生成堆转储文件,便于后期分析。...

    java、J2EE笔试面试题目复习资料

    - **内存管理**:垃圾回收机制、内存泄漏、内存溢出等问题。 - **性能优化**:CPU、内存、磁盘I/O等方面的优化策略。 - **设计原则与最佳实践**:开闭原则、迪米特法则、单一职责原则等。 以上只是部分复习重点...

    netty-file-master.rar

    Netty 是由 JBoss 提供的开源框架,它基于 Java NIO(非阻塞I/O)设计,提供了一种高效、灵活的方式来处理网络通信。Netty 的核心是它的事件驱动模型,通过 ChannelHandler 处理 I/O 事件,减少了线程上下文切换的...

Global site tag (gtag.js) - Google Analytics