WAS 中JAVA内存溢出的解决方法

内存溢出是使用WAS时会经常遇到的问题。
1.现在WAS的控制台上打开详细垃圾回收。一旦出现OOM的错误时,会在nativeerr.log中有记录,也可以从这个日志中看出内存分配的情况。
解决方法:
首先查看systemerr.log确定内存溢出的原因,是PermSize太小,还是Native thread无法创建,前者用MaxPermSize调整(IBM JDK没这个参数),后者调小最大堆大小或者Xss调整每个线程分配内存的大小(管理控制台:服务器->应用程序服务器->server1->进程定义->Java 虚拟机(初始堆大小 128 ; 最大堆大小 512)。
【WAS 中JAVA内存溢出的解决方法】如果是常见的堆的溢出,确保OutOfMemory时能生成heapdump文件,用Dump analyzer或者MDD4J分析dump文件,找到堆中占用空间总数最大的(或者数量最多的)对象。然后调整堆范围到一个比较小的区间,比如256M~384M,重新启动服务器,在运行1小时候手动做一次heapdump,运行4小时后做一次heapdump,运行8小时候做一次(间隔仅作参考)。然后分析一下三者的区别,看看哪个对象数量增长很多,占用空间增加很大。结合OutOfMemory时候的分析,应该能锁定问题的源头。


    推荐阅读