迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

解决 Java 中 Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded 异常

作者:迹忆客 最近更新:2023/07/12 浏览次数:

本篇文章介绍了 Java 中的“Java.lang.outofmemoryerror: GC overhead limit exceeded”错误。


Java.lang.outofmemoryerror: GC overhead limit exceeded错误

与其他编程语言不同,Java运行时使用垃圾收集器GC进程进行垃圾收集。 在Java中,每当内存的特定部分未被使用时,垃圾收集器就会为它们清除内存。

当我们的代码或应用程序耗尽所有内存并且 GC 无法再清理内存时,就会出现错误 Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded

错误 Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded 表示 JVM 执行垃圾收集的时间过长。 当 JVM 花费 98% 的时间进行垃圾回收时,就会抛出这个错误,并且只有另外 2% 的堆可以恢复。

这是引发相同错误的示例:

package jiyik;

import java.util.*;
public class Example {
    public static void main(String args[]) throws Exception {
        Map DemoMap = System.getProperties();
        Random DemoRandom = new Random();
        while (true) {
            DemoMap.put(DemoRandom.nextInt(), "value");
        }
    }
}

上面的代码会不断地将随机值放入map中,直到垃圾回收达到98%,并且会抛出 Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded。 堆内存用于映射中。

查看输出:

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

即使我们使用并行垃圾收集器运行此代码,它仍然会抛出相同的错误。 通过CMD查看示例:

java -Xmx100m -XX:+UseParallelGC Example.java

它仍然会抛出相同的错误。 查看输出:

C:\Users\Sheeraz>java -Xmx100m -XX:+UseParallelGC Example1.java
Note: Example1.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1047)
        at java.base/java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
        at java.base/java.util.Properties.put(Properties.java:1301)
        at jiyik.Example.main(Example1.java:9)

解决Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded错误

解决此错误的方法是防止内存泄漏。 确保遵循以下几点,以便防止内存泄漏:

  1. 确定完成堆内存分配的位置。
  2. 最佳实践是避免创建大量弱引用或临时对象,因为它们大多是内存泄漏的原因。
  3. 识别在堆上占用较大空间的对象。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

修复 Java 中错误 Error: Else Without if

发布时间:2023/07/13 浏览次数:183 分类:Java

本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'

Java 中的无效字符常量

发布时间:2023/07/13 浏览次数:152 分类:Java

本 Java 文章将讨论无效字符常量。 但在此之前,我们需要了解字符常量。Java字符常量 单字符常量,也称为字符常量,是封装在一对 '' 或单引号中的单个字符。

解决 Java 中 Missing Method Body or Declare Abstract

发布时间:2023/07/13 浏览次数:68 分类:Java

本篇文章讨论编译时错误、missing method body, or declare abstract。 在这里,我们将经历三个不同的步骤。首先,我们将了解一个Java程序来了解错误。 其次,突出显示此错误的可能原因,并最终找到

在 Java 中使用 Scanner 时没有此类元素异常

发布时间:2023/07/13 浏览次数:72 分类:Java

本篇文章将介绍如何在 Java 中使用 Scanner 时解决 NoSuchElementException 错误。在 Java 中使用 Scanner 时没有此类元素异常 Scanner 类用于在 Java 程序中获取用户输入。 它使用多种实用方法,如 next()、

Java 错误 Java.Net.SocketTimeoutException: Connection Timed Out

发布时间:2023/07/13 浏览次数:161 分类:Java

在本篇文章中,我们将讨论 java.net.SocketTimeoutException: Connection timed out。 但首先,让我们仔细看看套接字和超时的概念。Java 中的套接字 两个计算机应用程序之间的逻辑链接可能有多个端点,其

Java 错误 Char Cannot Be Dereferenced

发布时间:2023/07/13 浏览次数:87 分类:Java

本篇文章介绍如何解决Java的 java char cannot be dereferenced 错误。Java Char cannot be dereferenced 当我们尝试使用 equals() 方法检查一个字符是否与另一个字符相等时,会出现错误 java char can not be dereferenc

JavaFX 中 InvocationTargetException

发布时间:2023/07/13 浏览次数:165 分类:Java

本篇文章介绍如何解决 JavaFX 中的 InvocableTargetException。修复 JavaFX 中的 InspirationTargetException 当我们使用 JavaFX 时,会发生 InvokingTargetException 异常。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便