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)
上一篇 2022年5月21日 下午6:00
下一篇 2022年5月21日 下午6:00


相关推荐

  • 01_很好的网站:程序师

    01_很好的网站:程序师

    2021年9月1日
    65
  • ResNeXt与分组卷积

    ResNeXt与分组卷积ResNeXt 两点 1 Inceptionv4 的所有分支结构统一 2 inceptionblo 前后增加 shortcut 分支分支结构统一与 shortcut 左边是 Inception 结构 不同分支用不同的结构 右边是 ResNeXt 的 Block 每个分支都是 1×1 3×3 1×1 的 BottleNeck 结构 所以叫统一分支 1 为什么要统一分支 因为左边的结构是人为设计的 所以想用稍微自然一点的结构 有 ablationstud 吗 增加 shortcut 发现效果更好具体实现看右边的

    2026年3月17日
    1
  • 判断完全二叉树

    判断完全二叉树完全二叉树的定义:一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边。https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin百度定义 思路:层序遍历二叉树如果一个结点,左右孩子都不为空,则pop该节点,将其左右孩子入队列…

    2022年7月13日
    26
  • JavaScript中 querySelector 与 getElementById 方法的区别

    JavaScript中 querySelector 与 getElementById 方法的区别1 概述在看代码的时候发现基本上都是用 querySelecto 和 querySelecto 来获取元素 疑惑为什么不用 getElementBy 可能因为自己没用过那两个 所以并不清楚原因所在 1 1querySelect 和 querySelecto 的用法 querySelecto 方法定义 querySelecto 方法返回文档中匹配指定 CSS 选择器的一个元素 注意 querySelecto 方法仅返回匹

    2026年3月18日
    1
  • JVM虚拟机的运行机制和原理

    JVM虚拟机的运行机制和原理1 JVM 虚拟机介绍 JVM 是 JavaVirtualM Java 虚拟机 的缩写 是一个虚构出来的计算机 是通过在实际的计算机上仿真模拟各种计算机功能来实现的 Java 虚拟机主要由字节码指令集 寄存器 栈 垃圾回收堆和存储方法域等构成 JVM 屏蔽了与具体操作系统平台相关的信息 使 Java 程序只需生成在 Java 虚拟机上运行的目标代码 字节码 就可以在多种平台上不加修改地运行 JVM 在执行字节码时 实际上最终还是把字节码解释成具体平台上的机器指令执行 2 JVM 的生命周期 JVM 伴随 Java

    2026年3月16日
    2
  • 配置二层交换机Vlan_华为模拟器交换机配置

    配置二层交换机Vlan_华为模拟器交换机配置二层交换机VLAN基础配置

    2025年11月13日
    5

发表回复

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

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