GC overhead limit exceeded 问题分析与解决

GC overhead limit exceeded 问题分析与解决今天出现了一个很奇怪的异常:java.lang.OutOfMemoryError:GCoverheadlimitexceeded,超出了GC开销限制。科普了一下,这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。一般是因为堆太小,导致异常的原因:没有足够的内存。Sun官方对此的定义:超过98%的时间用来做GC并且回收了不到2%…

大家好,又见面了,我是你们的朋友全栈君。

今天出现了一个很奇怪的异常:java.lang.OutOfMemoryError: GC overhead limit exceeded ,超出了GC开销限制。科普了一下,这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。一般是因为堆太小,导致异常的原因:没有足够的内存。 

Sun 官方对此的定义:超过98%的时间用来做GC并且回收了不到2%的堆内存时会抛出此异常。

为什么会出现这个问题呢?经过反复测试发现,下载数据时文件大小超过某一峰值是会报这个错误。原因是在页面点击下载时,在数据库查询了很庞大的数据量,导致内存使用增加,才会出现这个问题。

解决办法:

1,查看项目中是否有大量的死循环或有使用大内存的代码,优化代码。

2,JVM给出这样一个参数:-XX:-UseGCOverheadLimit  禁用这个检查,其实这个参数解决不了内存问题,只是把错误的信息延后,替换成 java.lang.OutOfMemoryError: Java heap space。

3,增大堆内存 set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m  

这些值可根据实际情况修改,可参考: Tomcat内存配置及配置参数详解 

以上就是本文的全部内容,希望对大家的学习有所帮助,欢迎评论交流。能get到知识点不要忘了关注点个赞~ 拒绝白嫖从我们做起hh~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143434.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python版DDOS攻击工具脚本

    python版DDOS攻击工具脚本代码中有注释说明#!/usr/bin/envpython#-*-coding:UTF-8-*-fromredisimportRedisimporttimefromgurdimport*rdb=Redis(“127.0.0.1”)vips={}defsetOffset(offset): keys=rdb.keys(“*”) min=offset forkeyinkeys: ifkey==”offset”: cont

    2022年7月27日
    8
  • NSGA2 Python实现

    NSGA2 Python实现#importingnecessarymodulesimportmathimportrandomimportmatplotlib.pyplotasPlt#FirstFunctiontooptimizedeffunction1(x1,x2):value=-x1*2+x2returnvalue#SecondFunctiontooptimizedeffunction2(x1,x2):value=-x1*5*x2

    2022年5月12日
    39
  • jdbc中用ThreadLocal 进行内存优化

    jdbc中用ThreadLocal 进行内存优化

    2021年10月3日
    36
  • python计算平均值的代码(python3求平均值)

    计算平均值【问题描述】从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。【输入形式】从键盘输入三个整数,整数之间以空格隔开。【输出形式】在屏幕上分两行显示结果:第一行为三个数的和,整数形式输出;第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。【输入样例】323【输出样例】82.67【样例说明】3、2、3的和为8,所以第一行输出8;第二行输出3、2、3的平均值2.67(保留两位小数)。实现代码:x,y,z=(inpu.

    2022年4月15日
    61
  • react路由守卫(路由拦截)

    react路由守卫(路由拦截)react不同于vue,通过在路由里设置meta元字符实现路由拦截。在使用Vue,框架提供了路由守卫功能,用来在进入某个路有前进行一些校验工作,如果校验失败,就跳转到404或者登陆页面,比如Vue中的beforeEnter函数:…router.beforeEach(async(to,from,next)=>{consttoPath=to.path;constfromPath=from.path;})…react实现路由拦截的基

    2022年5月22日
    494
  • mysql连接不上navicat_mysql安装版步骤

    mysql连接不上navicat_mysql安装版步骤问题:解决方法:命令行登录mysql后执行如下命令alteruser’root’@’localhost’identifiedwithmysql_native_passwordby’密码’;使用我们给的密码进行navicat连接测试:…

    2022年10月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号