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)
- [Fix] java.time.zone.ZoneRulesException: Unknown time-zone ID
- Parse XML file in Java using DOM Parser
- Java equals method - Tutorial
- [Program] How to read three different values using Scanner in Java
- Java: The value of the local variable string is not used
- Display Output in Java Console as a Table
- How to detect Operating System using Java code
- Java 8 Streams map() with examples
- [Fix] java: incompatible types: incompatible parameter types in lambda expression error
- Add newline character Java code example (\r \n \r\n)
- List of Java Major Minor Version Numbers
- IntelliJ Keyboard Shortcut to remove unused imports [Java]
- Java - Check if array contains the value
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- How to declare and initialize Array in Java Programming
- [Solved] com.sun.xml.ws.transport.http.servlet.WSServletContextListener ClassNotFoundException
- XmlRpcException ConnectException connection refused error
- Create a Zip file using Java Code programmatically
- List of jar files for Jax-ws (SOAP) based Java Web Services
- How to fix Java HTTP java.net.UnknownHostException
- List of jars required for Struts2 project
- [fix] java: incompatible types: double cannot be converted to java.lang.Integer Generics
- Maven BUILD FAILURE: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin
- Get the current timestamp in Java
- java: unclosed string literal [Error]
- sudo is not recognized as an internal or external command - Windows
- Spotify is down for iOS and Android globally - error no internet connection available, something went wrong - News
- Unable to establish connection to adb : Android Studio Error - Android
- How to Use Command Prompt on a Mac? - MacOS
- Force convert HTML text input to upper case - Html
- Tutorial : Simple Lightweight Pure CSS based Vertical Navigation Menu - CSS
- Hide Navigation Bar from Android Screen Activity - Android
- SQL: Check if table exists - HowTos
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)