Project: Eclipse_Platform_UI
Bug 307545 [Workbench] heap status garbage collection/computation on UI thread
Reported: 2010-03-30 11:31:36 | Status: verified fixed

Build Identifier: I have had a few hangs where the UI goes to sleep because of an extensive/long running garbage collection. Is there a specific reason why this is done on the UI thread - the HeapStatus.gc() action waits and effectively renders the UI useless. This is especially annoying since sometimes garbage collection is done to improve performance, but this only worsens the experience. "main" TID:0x41E21300, j9thread_t:0x00015514, state:CW, prio=6 (native thread ID:0xBE4, native priority:0x6, native policy:UNKNOWN) at java/lang/Object.wait(Native Method) at java/lang/Object.wait(Object.java:196(Compiled Code)) at java/lang/Thread.join(Thread.java:652(Compiled Code)) at java/lang/Thread.join(Thread.java:633(Compiled Code)) at org/eclipse/ui/internal/HeapStatus$6.run(HeapStatus.java:330(Compiled Code)) at org/eclipse/swt/custom/BusyIndicator.showWhile(BusyIndicator.java:70(Compiled Code)) at org/eclipse/ui/internal/HeapStatus.gc(HeapStatus.java:317(Compiled Code)) at org/eclipse/ui/internal/HeapStatus.access$18(HeapStatus.java(Compiled Code)) at org/eclipse/ui/internal/HeapStatus$3.handleEvent(HeapStatus.java:140(Compiled Code)) at org/eclipse/swt/widgets/EventTable.sendEvent(EventTable.java:84(Compiled Code)) at org/eclipse/swt/widgets/Widget.sendEvent(Widget.java:1003(Compiled Code)) at org/eclipse/swt/widgets/Display.runDeferredEvents(Display.java:3815(Compiled Code)) at org/eclipse/swt/widgets/Display.readAndDispatch(Display.java:3417(Compiled Code)) at org/eclipse/ui/internal/Workbench.runEventLoop(Workbench.java:2385(Compiled Code)) at org/eclipse/ui/internal/Workbench.runUI(Workbench.java:2348) at org/eclipse/ui/internal/Workbench.access$4(Workbench.java:2200) at org/eclipse/ui/internal/Workbench$5.run(Workbench.java:495) at org/eclipse/core/databinding/observable/Realm.runWithDefault(Realm.java:288) at org/eclipse/ui/internal/Workbench.createAndRunWorkbench(Workbench.java:490) at org/eclipse/ui/PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org/eclipse/ui/internal/ide/application/IDEApplication.start(IDEApplication.java:113) at org/eclipse/equinox/internal/app/EclipseAppHandle.run(EclipseAppHandle.java:193) 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:386) at org/eclipse/core/runtime/adaptor/EclipseStarter.run(EclipseStarter.java:179) at sun/reflect/NativeMethodAccessorImpl.invoke0(Native Method) at sun/reflect/NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37(Compiled Code)) at java/lang/reflect/Method.invoke(Method.java:599(Compiled Code)) at org/eclipse/equinox/launcher/Main.invokeFramework(Main.java:549) at org/eclipse/equinox/launcher/Main.basicRun(Main.java:504) at org/eclipse/equinox/launcher/Main.run(Main.java:1236) at org/eclipse/equinox/launcher/Main.main(Main.java:1212) Reproducible: Always

Files changed in fix:
bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/HeapStatus.java