[Eclipse] [HOWTO] Solve java.lang.OutOfMemoryError: PermGen space

Recently (since I have been using Eclipse for PHP developers) I am getting an error while executing Eclipse Helios and I try to commit a ‘non-simple’ task (for the IDE), like saving a project, cutting multiple code lines, auto-complete function, and so on:

  1. Foreword. OS and configuration
  2. Problem description
  3. Solution
1. Foreword: OS and configuration
  • Windows 7 Professional 64bits.
  • Eclipse Helios for PHP developers x64.
  • Oracle JDK 7u4.

2. Problem description: you might see below Eclipse’s output when the JVM crashes:

!SESSION 2012-04-28 18:15:40.832 -----------------------------------------------
eclipse.buildId=I20100608-0911
java.version=1.7.0_04
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=es_ES
Framework arguments: -product org.eclipse.epp.package.php.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.php.product
!ENTRY org.eclipse.core.resources 2 10035 2012-04-28 18:16:06.184
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.


!SESSION Tue May 01 13:36:02 CEST 2012 -----------------------------------------
!ENTRY org.eclipse.equinox.launcher 4 0 2012-05-01 13:36:02.532
!MESSAGE Exception launching the Eclipse Platform:
!STACK
java.lang.OutOfMemoryError: PermGen space

While on the first paragraph it is shown the information about the Eclipse launching (OS, Eclipse version, Java version…) on the second paragraph it is shown the error information:

java.lang.OutOfMemoryError: PermGen space

Which means, as stated here (which redirects to here):

PermGen is the permanent generation of objects in the VM (Class names, internalized strings, objects that will never get garbage-collected)

3. Solution.

Looking up through the Internet about this error, I found (again on the Eclipse wiki) that it is necessary to increase the amount of memory that the JVM is authorized to use. It can be achieved by changing the launching configuration file (eclipse.ini), enhancing the XXMaxPermSize and Xmx parameters (by default to 256m and 384m respectively) as shown below:

– Complete eclipse.ini content:


-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.0.v20100503
-product
org.eclipse.epp.package.php.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vm
C:\Program Files\Java\jdk1.7.0_04\bin
-vmargs
-XX:MaxPermSize=512m
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024m

Edit: It is important to add the “-XX:MaxPermSize=256m” line after “-vmargs” (in my case, I decided to put “-XX:MaxPermSize=512m”.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s