java.lang.OutOfMemoryError: GC overhead limit exceeded
错误代码:
java.lang.OutOfMemoryError: GC overhead limit exceeded
原因分析:
该错误为JDK6新增错误类型。当GC为释放很小空间占用大量时间时抛出。
一般是因为堆太小,导致异常的原因:没有足够的内存
解决办法:
首先查看系统是否有使用大内存的代码或死循环,然后可以通过调整如下参数来解决:
- JVM opts 中增加heap值,如: -Xmx2048m 或者更大(注意32位、64位版本)
- JVM的启动参数中限制使用该参数(默认启用):-XX:-UseGCOverheadLimit
JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。
浙公网安备 33010602011771号