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~

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQLite 下载与安装「建议收藏」

    SQLite 下载与安装「建议收藏」一,安装1.到sqlite官网下载压缩包https://www.sqlite.org/download.html下载后是下面这2个文件:解压到同一目录,如图:”安装”完成后,在cmd下,执行sqlite3验证下是否安装正常。若不正常则需要添加系统环境变量,以便命令行式的操作。二,安装管理工具官网:http://sqlitestudio.pl或直接访问下载https://github.com/pawelsalawa/sqlitestudi…

    2022年10月24日
  • mysql服务性能优化—my.cnf配置说明详解

    mysql服务性能优化—my.cnf配置说明详解

  • traceroute工作原理[通俗易懂]

    traceroute工作原理[通俗易懂]traceroute,也就是traceroute,跟踪路由。这个程序最早是VanJacobson实现的。源代码在网上能够找到,只是我还没有去找。基本的原理是IP路由过程中对数据包TTL(Tim

  • 数据库表分区的作用_oracle数据库分区

    数据库表分区的作用_oracle数据库分区分区表分区表用途分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。分区表的优点:(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;(2)可…

  • java如何实现服务降级_Hystrix服务降级

    java如何实现服务降级_Hystrix服务降级##注意Hystrix默认的服务降级时长是1秒钟.因为网络波动,这个值在正式环境中需要调整一下.##导入包~~~org.springframework.cloudspring-cloud-starter-netflix-hystrix2.0.1.RELEASE~~~##启动类~~~packagecom.like;importorg.springframework.boot.SpringA…

  • HTML DOM clearInterval() 方法

    HTML DOM clearInterval() 方法

    2021年10月18日

发表回复

您的电子邮箱地址不会被公开。

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