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)
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.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 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)
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!