How to fix GC overhead limit exceeded in Eclipse

Eclipse will throw the below error when it runs out of memory. It normally occurs on big projects when performing memory-intensive operations, such as building workspace.

An internal error occurred during: "Building workspace".
GC overhead limit exceeded

Memory is allocated via Eclipse' configuration file which is executed during Eclipse' startup. It is located in Eclipse's installation directory and named eclipse.ini. The default values are good enough for small projects, but not suffice for the bigger ones.

Below is the file's content for Eclipse Neon;

-startup
plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m

Fixing the problem means allocating more memory for Eclipse. This is done by increasing the values of some parameters in the configuration file. You should only be concerned of the following lines;

-Xms256m
-Xmx1024m

Each lines allocate memory in Megabytes for different aspect of the program, namely the followings;

  • Xms
    • Initial memory allocation pool
  • Xmx
    • Maximum memory allocation pool for Java Virtual Machine (JVM)

There's no one-size-fits-all solution for this issue as it depends on how much memory you need versus how much memory you have. You can start by probably doubling the amounts as in the below example and then go from there.

-Xms512m
-Xmx2048m

The changes will take effect after Eclipse is restarted.

comments powered by Disqus