WAS 中JAVA内存溢出的问题应该按照什么思路来解决?

WAS 中JAVA内存溢出的问题应该按照什么思路来解决?,第1张

�故荖ative thread无法创建,前者用MaxPermSize调整(IBM JDK没这个参数),后者调小最大堆大小或者Xss调整每个线程分配内存的大小。如果是常见的堆的溢出,确保OutOfMemory时能生成heapdump文件,用Dump analyzer或者MDD4J分析dump文件,找到堆中占用空间总数最大的(或者数量最多的)对象。然后调整堆范围到一个比较小的区间,比如256M~384M,重新启动服务器,在运行1小时候手动做一次heapdump,运行4小时后做一次heapdump,运行8小时候做一次(间隔仅作参考)。然后分析一下三者的区别,看看哪个对象数量增长很多,占用空间增加很大。结合OutOfMemory时候的分析,应该能锁定问题的源头。 huweihong: 内存溢出是使用WAS时会经常遇到的问题。1.现在WAS的控制台上打开详细垃圾回收。一旦出现OOM的错误时,会在nativeerr.log中有记录,也可以从这个日志中看出内存分配的情况。2。参见hashei的回帖把相关日志收集齐,使用ISA中的相关工具进行日志分析,会看到一些提示的。有的时候内存溢出是WAS自身引入的,可以看看是不是有相关的补丁包。还有多数都是自己开发程序的问题,使用的对象没有释放。这个就要具体情况具体分析了。其实解决所有的问题的思路就是:大胆假设,小心求证。我的经验。:) 呵呵,其实我感觉95%以上的OOM发生都是和代码本身的质量有关系的,以下是我的一点小思路,不知道对大家是否有帮助:OOM的情况,必定会产生宕机日志,所以,首先从分析宕机日志开始.分析工具很多,根据侧重点不同进行选取即可.一般情况下无非就是两重情况:大对象和内存泄露.于是,赶紧查查业务代码,是那些地方产生的.一个好的框架会帮你节省不少体力活的.不过我感觉一般的大对象大都是RS引起的,不小心查了几万行数据又不做分页,不宕机都不行啊。

1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出

JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young GenerationTenured Generaion之和。

在JVM中如果98%的时间是用于GC,且可用的Heap size不足2%的时候将抛出此异常信息。

解决方法:手动设置JVM Heap(堆)的大小。  

 

2. java.lang.OutOfMemoryError: PermGen space  ---- PermGen space溢出。 

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。

为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 GC不会在主程序运行期对PermGen space进行清理,所以如果你的APP会载入很多CLASS的话,就很可能出现PermGen space溢出。

解决方法: 手动设置MaxPermSize大小

3. java.lang.StackOverflowError   ---- 栈溢出

栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的。函数的调用过程都体现在堆栈和退栈上了。

调用构造函数的 “层”太多了,以致于把栈区溢出了。

通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要 1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间。通常栈的大小是1-2MB的。

通常递归也不要递归的层次过多,很容易溢出。

解决方法:修改程序。

1、有生成系统core文件吗,如果是异常宕机一般会生成一个系统core文件,如果生成的是javacore、heapdump文件那应该是内存溢出OutOfMemeryError,

2、如果是内存溢出的话就需要先分析一下native_stderr.log文件,看一下JVM堆内存泄漏;或者看一下内存溢出是gc操作申请的是不是一个对象,如果是那就是大对象导致内存溢出,需要看一下javacore文件Current Thread的堆栈;如果JVM堆内存是耗尽了,再gc操作也回收不来可用内存了,那就是JVM堆内存耗尽导致的内存溢出,需要分析heapdump文件,看一下JVM堆内存中都是什么对象。我的服务器是用小鸟云,稳定性比较好不容易出错。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/225011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存