Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 350458 - Java.lang.OutOfMemoryError: PermGen space and eclipse shutdown.
Summary: Java.lang.OutOfMemoryError: PermGen space and eclipse shutdown.
Status: RESOLVED FIXED
Alias: None
Product: Papyrus
Classification: Modeling
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 normal with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-27 11:12 EDT by Wojciech Trocki CLA
Modified: 2013-07-05 12:39 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Wojciech Trocki CLA 2011-06-27 11:12:02 EDT
Build Identifier: 

When working with papyrus class diagram (included my own small profile), when I open the empty editor and try to add new element from palette eclipse hang up for a moment and sometimes I have Java.lang.OutOfMemoryError: PermGen space error. Is this error known?

Reproducible: Always

Steps to Reproduce:
1. Start Papyrus
2. Open diagram
3. Try to add some element (e.g class or enum)
Comment 1 Wojciech Trocki CLA 2011-06-27 11:19:09 EDT
Error log:

!ENTRY org.eclipse.ui 4 0 2011-04-14 09:44:15.774
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.OutOfMemoryError: PermGen space
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
	at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
	at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
	at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at org.eclipse.gmf.runtime.diagram.ui.providers.ide.internal.providers.DiagramIDEContributionItemProvider.createAction(DiagramIDEContributionItemProvider.java:41)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider.getAction(AbstractContributionItemProvider.java:474)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider.getAction(AbstractContributionItemProvider.java:520)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider.contributeToActionBars(AbstractContributionItemProvider.java:265)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider.contributeToActionBars(AbstractContributionItemProvider.java:154)
	at org.eclipse.gmf.runtime.common.ui.services.action.internal.contributionitem.ContributeToActionBarsOperation.execute(ContributeToActionBarsOperation.java:75)
	at org.eclipse.gmf.runtime.common.core.service.ExecutionStrategy$4.execute(ExecutionStrategy.java:182)
	at org.eclipse.gmf.runtime.common.core.service.Service.execute(Service.java:652)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.ContributionItemService.execute(ContributionItemService.java:293)
	at org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.ContributionItemService.contributeToActionBars(ContributionItemService.java:241)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramActionBarContributor.init(DiagramActionBarContributor.java:75)
	at org.eclipse.ui.part.EditorActionBarContributor.init(EditorActionBarContributor.java:146)
	at org.eclipse.papyrus.diagram.common.part.UMLDiagramActionBarContributor.init(UMLDiagramActionBarContributor.java:44)
	at org.eclipse.papyrus.core.multidiagram.actionbarcontributor.CoreComposedActionBarContributor.init(CoreComposedActionBarContributor.java:97)
	at org.eclipse.ui.internal.EditorManager.createEditorActionBars(EditorManager.java:323)
Comment 2 Yann Tanguy CLA 2011-06-28 07:58:16 EDT
Here are some info to avoid PermGenSpace errors:
http://wiki.eclipse.org/FAQ_How_do_I_increase_the_permgen_size_available_to_Eclipse%3F
Comment 3 Wojciech Trocki CLA 2011-07-01 09:32:51 EDT
I know how to change permgen space :) 
My Eclipse has now max permgen space set to 1 GB and problem still exist. 
Only when working with papyrus. We use papyrus tool in University. (9 users and all have this error at least one time. )

Another stack trace:

!ENTRY org.eclipse.emf.facet.widgets.nattable.workbench 1 0 2011-07-01 15:24:02.573
!MESSAGE Model is not editable (org.eclipse.emf.facet.widgets.nattable.workbench_0.1.0.v201106070935)
!STACK 0
org.eclipse.emf.facet.util.core.Logger$LogStackTrace
	at org.eclipse.emf.facet.util.core.Logger.log(Logger.java:116)
	at org.eclipse.emf.facet.util.core.Logger.logInfo(Logger.java:66)
	at org.eclipse.emf.facet.widgets.nattable.workbench.internal.actions.OpenTableEditorAction.openOn(OpenTableEditorAction.java:60)
	at org.eclipse.emf.facet.widgets.nattable.workbench.internal.actions.OpenTableAction.run(OpenTableAction.java:48)
	at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!ENTRY org.eclipse.ui 4 0 2011-07-01 15:24:14.292
!MESSAGE Unhandled event loop exception
java.lang.OutOfMemoryError: PermGen space
Comment 4 Yann Tanguy CLA 2011-07-01 10:05:02 EDT
Just to make sure, can you share the jvm arguments you set in the eclipse.ini file ?
Comment 5 Wojciech Trocki CLA 2011-07-01 11:03:49 EDT
Ini file content related with jvm memory usage:

-Xms140m
-Xmx512m
-XX:PermSize=512M
-XX:MaxPermSize=850M

I think that resizing max perm size do not resolve this problem, because in some situations permanent generations grows to infinite, but this is only my own opinion.
Comment 6 Yann Tanguy CLA 2011-07-04 11:09:19 EDT
Probably not, I'm currently using -XX:PermSize=64M -XX:MaxPermSize=128M  -Xms40m -Xmx1024m and did not face the same issue (I also tried yours without trouble).

You are currently using Indigo with Papyrus 0.8.0 right ?
Which OS and JRE are you using ?
Comment 7 Wojciech Trocki CLA 2011-07-05 04:48:14 EDT
(In reply to comment #6)
> Probably not, I'm currently using -XX:PermSize=64M -XX:MaxPermSize=128M 
> -Xms40m -Xmx1024m and did not face the same issue (I also tried yours without
> trouble).
> 
> You are currently using Indigo with Papyrus 0.8.0 right ?
Yes. 

> Which OS and JRE are you using ?
Win XP SP3. JRE 1.6.21 

When monitoring memory usage using tools in jdk (with no support for permanent generation :( ) the most memory consuming place is a creation a new model using wizard with opening editor.
Comment 8 Camille Letavernier CLA 2013-07-05 12:39:12 EDT
In the current version, Papyrus runs correctly with less than 512M of PermGen space (256m is enough in most all cases)

I close this task