java.lang.OutOfMemoryError is the most common error that is encountered by java programmers. As the Exception suggests that the issue here is related to memory. Mostly it may not be a programmer's fault, but sometimes memory leaks in the code can cause this issue. The JVM (Java Virtual Machine) throws this error message when no more objects can be added to the heap due to memory not available or the garbage collector is not able to free up memory space.
Types of java.lang.OutOfMemoryError Error messagesThe OutOfMemoryError exception can occur due to various reasons, so let's look into a list of 7 different types of error messages one may encounter.
You are an Android Developer or a J2EE developer you will surely encounter one of the OutOfMemoryError errors listed below.
- java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: GC overhead limit exceeded
- java.lang.OutOfMemoryError: unable to create new native thread
- java.lang.OutOfMemoryError: Requested array size exceeds VM limit
- java.lang.OutOfMemoryError: requested bytes for Chunk::new. Out of swap space
- java.lang.OutOfMemoryError: (Native method)
- How to Get List of All Country Codes in Java Using Locale Class
- Unsupported major.minor version 52.0 in java
- Java - How to set custom thread name?
- Get the current timestamp in Java
- Java Spring Boot 3 Web Hello World with Gradle in IntelliJ
- [fix] NullPointerException Cannot Invoke findById because Repository is null - Java Spring
- java: unclosed string literal [Error]
- Convert Java Byte Array to String with code examples
- Error: Can not find the tag library descriptor for
- Java 8 - Convert List to Map Examples
- Java - Calculate time taken for the code to execute in milliseconds or nanoseconds
- Fix java.net.ProtocolException: Invalid HTTP method
- Java: Convert Stream to List
- Java equals method - Tutorial
- List of Java JDBC Database Driver Jars, Classes and URLs Details
- Read YAML file Java Jackson Library
- How to display Java Date Time timezone GMT/UTC offset using SimpleDateFormat
- List of Java Keywords
- Enable JSON Pretty Print in Java Jackson
- How to Word-Warp Console logs in IntelliJ
- Convert Map to List in Java 8 using Stream API
- Create a Directory using Java Code
- Ways to Convert Integer or int to Long in Java
- [Program] How to read three different values using Scanner in Java
- Java JDBC Example with Oracle Database Driver Connection
- Top 10 emerging breakthrough trending technologies - HowTos
- How to the Install Official Android Emulator for Mac? - Android
- Step-by-Step: How to delete a git branch from local as well as remote origin - Git
- M365 service Europe outage - AADSTS90033 A transient error has occurred. Please try again. - Microsoft
- How to turn off Dark Mode in Excel App for Mac - Windows
- How to Hum a Song to Google to find it out! [Android and iPhone] - Google
- Java: Convert Double to 2 Decimal Places [Examples] - Java
- How to check PowerShell version - Powershell
This is the most common type of OutOfMemoryError error, its thrown when the JVM heap size if full and the GC garbage collector is unable to reclaim any objects. As discussed earlier it can be a genuine memory issue, or an issue caused due to memory leak. There are various tools available that can help you analyze code memory leaks. Reading heap dumps using analyses tools can help resolve memory leaks (example YourKit and JProfiler)
PermGen space is a part of JVM. It is the space that is reserved for the long-term object. Garbage collection in PremGen happens only when under certain circumstances. This kind of error is thrown when PermGen space memory is full.
This error message is thrown when the Garbage Collector it taking too long to recover too little memory. You would see a sharp increase in the CPU time utilization to free up a very little amount of memory.
This OutOfMemoryError error is thrown when the java process size has reached its maximum limit. This error is encountered mostly when too many threads are spawned.
This OutOfMemoryError exception is thrown when you exceed the maximum size a Java Array object can have (usually Integer.MAX_VALUE of 2GB)
This OutOfMemoryError exception is thrown when the JVM memory is full. It usually happens when there are too many processes running on the machine.
The native code of Java is usually written in C (or maybe C++ too). As the exception tell the problem here is with the native code.
Error Stacktracejava.lang.OutOfMemoryError: Java heap space
at java.nio.HeapIntBuffer.(Unknown Source)
at java.nio.IntBuffer.allocate(Unknown Source)
at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapIntBuffer.(Unknown Source)
at java.nio.IntBuffer.allocate(Unknown Source)
at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapIntBuffer.(Unknown Source)
at java.nio.IntBuffer.allocate(Unknown Source)
at com.sun.javafx.tk.quantum.UploadingPainter.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)