解决 Java 中 Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded 异常
本篇文章介绍了 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错误
解决此错误的方法是防止内存泄漏。 确保遵循以下几点,以便防止内存泄漏:
- 确定完成堆内存分配的位置。
- 最佳实践是避免创建大量弱引用或临时对象,因为它们大多是内存泄漏的原因。
- 识别在堆上占用较大空间的对象。
相关文章
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 异常 Exception in Thread AWT-EventQueue-0 java.lang.NullPointerException
发布时间:2023/07/16 浏览次数:983 分类:Java
-
当我们使用 Java AWT 包方法并且将 null 值传递给任何方法时,会发生 “AWT-EventQueue-0”java.lang.NullPointerException 异常。 本教程演示如何在 Java 中解决此 NullPointerException。Java 中线程“AWT-EventQueue-0”
Java 异常 Java.Lang.IllegalMonitorStateException
发布时间:2023/07/16 浏览次数:176 分类:Java
-
IllegalMonitorStateException 与多线程编程有关。 本篇文章描述并演示了 Java 中的 IllegalMonitorStateException。Java 中的 java.lang.IllegalMonitorStateException 在 Java 中使用多线程编程时会发生 IllegalMonitorStateExce
Java 异常 Exception in Thread Main Java.Util.NoSuchElementException: No Line Fo
发布时间:2023/07/16 浏览次数:486 分类:Java
-
本篇文章介绍如何解决Java中的异常 Exception in thread "main" java.util.NoSuchElementException: No line found。java.util.NoSuchElementException 是运行时未经检查的异常
Java 异常 Java.Lang.ClassNotFoundeException: Sun.Jdbc.Odbc.JdbcOdbcDriver
发布时间:2023/07/15 浏览次数:421 分类:Java
-
本篇文章介绍了 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 错误。修复 Java 中的 java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
Java 异常 Java.Lang.ClassNotFoundException: Org.SpringFramework.Web.Servlet.Dis
发布时间:2023/07/15 浏览次数:323 分类:Java
-
今天关于 Java 的文章将介绍错误 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet。什么是 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
解决 Java 异常 Unable to Instantiate org.apache.hadoop.hive.ql.metadata.Sessi
发布时间:2023/07/14 浏览次数:251 分类:Java
-
本篇文章介绍如何解决 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient。Apache Hive 是一款开源数据仓库软件,用于读取、管理和写入存储在 Hadoop 文件中的大
Java 异常 java.lang.AbstractMethodError
发布时间:2023/07/14 浏览次数:256 分类:Java
-
本文将帮助您了解 java.lang.AbstractMethodError 以及如何在 Java 中解决它们。修复 Java 中的 java.lang.AbstractMethodError 错误 有时,我们的程序在运行时可能会遇到 AbstractMethodError。