by BehindJava

How to resolve "java.lang.OutOfMemoryError Java heap space" error

Home » java » How to resolve "java.lang.OutOfMemoryError Java heap space" error

I would like to add recommendations from oracle trouble shooting article.

Exception in thread thread_name: java.lang.OutOfMemoryError: Java heap space

The detail message Java heap space indicates object could not be allocated in the Java heap. This error does not necessarily imply a memory leak

Possible causes:

  1. Simple configuration issue, where the specified heap size is insufficient for the application.
  2. Application is unintentionally holding references to objects, and this prevents the objects from being garbage collected.
  3. Excessive use of finalizers.

One other potential source of this error arises with applications that make excessive use of finalizers. If a class has a finalize method, then objects of that type do not have their space reclaimed at garbage collection time

After garbage collection, the objects are queued for finalization, which occurs at a later time. finalizers are executed by a daemon thread that services the finalization queue. If the finalizer thread cannot keep up with the finalization queue, then the Java heap could fill up and this type of OutOfMemoryError exception would be thrown.

One scenario that can cause this situation is when an application creates high-priority threads that cause the finalization queue to increase at a rate that is faster than the rate at which the finalizer thread is servicing that queue.

Add this line to your gradle.properties file.

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Follow this steps for Tomcat:

  1. Open catalina.sh from tomcat/bin.
  2. Change JAVA_OPTS to

    JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m 
    -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
    -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
  3. Restart your tomcat

For IDE users you can set max heap size to solve the problem.

  • Go to ’Run’, then —> ’Set Project Configuration’ —> ’Customise’ —> ’run’ of its popped up window —> ’VM Option’ —> fill in ’-Xms2048m -Xmx2048m‘.