java内存溢出问题解决办法

Java 内存溢出是常见问题, 现介绍内存溢出问题的几种解决办法, 不仅适用于 TongWeb,也适用所有的 Java 程序。
以下介绍的这些JVM参数都是加在TongWeb的startserver启动脚本中或JVM的启动参数中,本文不再介绍 shell 或批处理文件的写法
1. OutOfMemoryError: PermGen space 异常
这种问题常发生于 Oracle JDK 和 Open JDK 上,IBM JDK 没有此问题, 原因是程序中使用了大量的 jar 或 class,使 Java 虚拟机装载类的空间不够,与 PermSize 区有关。

解决这类问题就是增加 JVM 中的-XX:PermSize 和-XX:MaxPermSize 参数的大小,如:另外要注意清理应用中无用的 jar 和 class,在 TongWeb 上反复重部署应用后,记得重启下 TongWeb,以释放 PermSize 区内存。


2. OutOfMemoryError:unable to create new native thread 异常

这种情况是 Java 进程的线程数太多了,有可能是 TongWeb 的线程数设置过多,也有可能是应用起的线程数过多。通过 Oracle JDK 的 jstack 命令:jstack <PID> 打出线程堆栈可以看到线程的个数和状态。IBM JDK 可用 kill -3 <PID>命令打出,在进程的起始目录下生成 javacore 开头的线程分析文件。


3. OutOfMemoryError:GC overhead limit exceeded 异常

此问题常见于JDK6上, 在JVM的启动参数中 增加-XX:-UseGCOverheadLimit 即可解决。


4. OutOfMemoryError:Java heap space 异常
这种问题的原因是 JVM 中创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了。初步解决办法就是增加 JVM 中 Xms(初始堆大小)和 Xmx(最大堆大小)参数的大小,如:-Xms2048m –Xmx2048m,以及调整垃圾回收策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值