迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 异常 Java.IO.StreamCorruptedException: Invalid Stream Header

发布时间:2023/07/16 浏览次数:1181 分类:Java

本文介绍如何修复Java的 java.io.StreamCorruptedException: invalid stream header 异常。Java 中的 java.io.StreamCorruptedException: invalid stream header java.io.StreamCorruptedException: invalid stream header 是相对常见的异常。

Java 异常 Java.IO.IOException: Connection Reset by Peer

发布时间:2023/07/16 浏览次数:1586 分类:Java

本篇文章介绍 Java 的 java.io.IOException: Connection reset by peer。Java 中 java.io.IOException: Connection reset by peer IOException 表示读取或写入文件或访问文件系统时可能发生的任何输入输出异常。

Java 异常 Java.Lang.IllegalMonitorStateException

发布时间:2023/07/16 浏览次数:176 分类:Java

IllegalMonitorStateException 与多线程编程有关。 本篇文章描述并演示了 Java 中的 IllegalMonitorStateException。Java 中的 java.lang.IllegalMonitorStateException 在 Java 中使用多线程编程时会发生 IllegalMonitorStateExce

Java 异常 java.lang.AbstractMethodError

发布时间:2023/07/14 浏览次数:256 分类:Java

本文将帮助您了解 java.lang.AbstractMethodError 以及如何在 Java 中解决它们。修复 Java 中的 java.lang.AbstractMethodError 错误 有时,我们的程序在运行时可能会遇到 AbstractMethodError。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便