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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis中的动态sql表现为_MybatisPlus

    mybatis中的动态sql表现为_MybatisPlus如何分页查询Mybatis如何分页查询?Mysql中可以使用limit语句,但limit并不是标准SQL中的,如果是其它的数据库,则需要使用其它语句。MyBatis提供了RowBounds类,用于实现分页查询。RowBounds中有两个数字,offset和limit。MyBatis如何利用RowBounds

    2022年9月22日
    4
  • intellij idea 激活码[最新免费获取]「建议收藏」

    (intellij idea 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    58
  • potplayer 64位 官网下载地址

    potplayer 64位 官网下载地址potplayer64位最新官网下载地址链接:https://gsf-fl.softonic.com/f94/2ec/be06ec8a283bee92cda70eb3ede9c661d0/PotPlayerSetup64.exe?Expires=1585679112&Signature=cff21a190f0fcb9c61356f8eca9b8155ed6afc48&ur…

    2022年7月12日
    52
  • SSO 单点登录_sso登陆

    SSO 单点登录_sso登陆单点登录(SingleSignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。实现SSO的主要工具是Cookie

    2025年8月5日
    5
  • java异常return在finally前面_java 异常处理

    java异常return在finally前面_java 异常处理java 的异常处理机制,执行顺序;return在异常中的使用 ;自定义异常类的简单应用异常处理2种方法:1.抛 (throws)2.自己处理try/catch/finally1.抛出:向上一级抛出,异常实际没有被解决掉2.try/catch/finally(1)正常执行public class Test1 { public static void main(String[] args) { Test1 test1 = new Test1(); test

    2022年8月8日
    5
  • vue常用组件封装_vue组件全局注册和局部注册

    vue常用组件封装_vue组件全局注册和局部注册项目中肯定会常用的一些基础组件,比如弹窗,toast之类的,要是在每个页面去引入的话那也太麻烦了,还好vue提供了一个全局注册组件的api,即Vue.compoment。在入口文件main.js里import需要的组件,使用Vue.compoment注册即可//src/main.jsimportmodelfrom’@/components/BaseModel’importtoastfrom’@/components/BaseButton’Vue.component(‘BaseMod

    2022年9月14日
    5

发表回复

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

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