Community
Participate
Working Groups
When attempting to compile a very large class file the eclipse platform locks up consuming 100% of cpu resources and slowly increasing it's memory footprint. This lockup appears to go indefinitely until the process is manually killed. I recreated this a number of times. When attempting the same with javac at the command line a "code too large" error is returned within 10 seconds or so. This behaviour is much more desirable. JDT: Version: 3.1.2 Build id: I20050627-1435 javac: javac 1.5.0_06 jdk: javac 1.5.0_06 machine: 1GB RAM Athlon 64 3000 WinXP sp2 Thanks, Benjamin /* http://www.benjaminranck.com */
Could you please provide a test case ?
First question should be how do you end up with such a huge compilation unit? I'd like to get a test case to see if we end up reporting an error or compiling the code successfully. Closing as REMIND. Reopen when a test case is available.
Also, compiling with Eclipse batch compiler vs. IDE builder could show interesting differences.
Created attachment 39692 [details] Test case for code too large.
I have a attached my generated lookup table. This obvious workaround is runtime generation, however that isn't implicitly related to the behavior of the JDT when the code is too large. Cheers, Benjamin
Using I20060427-0800, and the batch compiler I get the answer in 4s. [compiled 15 lines in 3875 ms: 3.8 lines/s] ---------- 1. ERROR in D:\tests_sources\X.java (at line 1) final class X { ^ The code for the static initializer is exceeding the 65535 bytes limit ---------- 1 problem (1 error)
Inside Eclipse, it is really slow in the Java editor. Moving to JDT/Text for investigation.
Thread dump looks like this: "main" prio=6 tid=0x00034b58 nid=0x8dc runnable [0x0007d000..0x0007fc44] at org.eclipse.swt.graphics.TextLayout.setStyle(TextLayout.java:1994) at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:841) at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:673) at org.eclipse.swt.custom.StyledTextRenderer.calculate(StyledTextRenderer.java:200) at org.eclipse.swt.custom.StyledTextRenderer.calculateClientArea(StyledTextRenderer.java:218) at org.eclipse.swt.custom.StyledText.resetCache(StyledText.java:6336) at org.eclipse.swt.custom.StyledText.setStyleRanges(StyledText.java:7804) at org.eclipse.swt.custom.StyledText.replaceStyleRanges(StyledText.java:6259) at org.eclipse.jface.text.TextViewer.addPresentation(TextViewer.java:4210) at org.eclipse.jface.text.TextViewer.changeTextPresentation(TextViewer.java:4289) at org.eclipse.jface.text.presentation.PresentationReconciler.applyTextRegionCollection(PresentationReconciler.java:573) at org.eclipse.jface.text.presentation.PresentationReconciler.processDamage(PresentationReconciler.java:562) at org.eclipse.jface.text.presentation.PresentationReconciler.access$3(PresentationReconciler.java:558) at org.eclipse.jface.text.presentation.PresentationReconciler$InternalListener.textChanged(PresentationReconciler.java:224) at org.eclipse.jface.text.TextViewer.updateTextListeners(TextViewer.java:2396) at org.eclipse.jface.text.TextViewer$VisibleDocumentListener.documentChanged(TextViewer.java:346) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged2(AbstractDocument.java:699) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:672) at org.eclipse.jface.text.AbstractDocument.doFireDocumentChanged(AbstractDocument.java:657) at org.eclipse.jface.text.AbstractDocument.fireDocumentChanged(AbstractDocument.java:722) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1116) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:179) - locked <0x07f71878> (a java.lang.Object) at org.eclipse.jface.text.AbstractDocument.set(AbstractDocument.java:1097) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.set(SynchronizableDocument.java:165) - locked <0x07f71878> (a java.lang.Object) at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter$DocumentSetCommand.run(DocumentAdapter.java:105) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:152) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:28) at org.eclipse.swt.widgets.Display.syncExec(Display.java:3763) at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter$DocumentSetCommand.set(DocumentAdapter.java:110) at org.eclipse.jdt.internal.ui.javaeditor.DocumentAdapter.setContents(DocumentAdapter.java:424) at org.eclipse.jdt.internal.core.CreateCompilationUnitOperation.executeOperation(CreateCompilationUnitOperation.java:95) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1737) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784) at org.eclipse.jdt.internal.core.PackageFragment.createCompilationUnit(PackageFragment.java:141) at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$1.run(PasteAction.java:432) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1737) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4011) at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:369) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:313) at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:763) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:760) at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2283) at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:1130) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) at org.eclipse.ui.internal.progress.ProgressManager.runInUI(ProgressManager.java:1126) at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$TextPaster.paste(PasteAction.java:475) at org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction.run(PasteAction.java:200) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:267) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:243) at org.eclipse.jface.action.Action.runWithEvent(Action.java:499) at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:229) at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:461) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:424) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:160) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:466) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:799) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:846) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:564) at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:506) at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:122) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Display.filterEvent(Display.java:982) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:924) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:934) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:962) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:958) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1272) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3346) at org.eclipse.swt.widgets.Tree.WM_CHAR(Tree.java:4699) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3246) at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:4695) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1922) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336) at org.eclipse.core.launcher.Main.basicRun(Main.java:280) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952) After several minutes, it still in the same code.
Olivier, what is the X.java? The test case has a different name.
X.java is simply a rename of the test case provided in the PR when I tried to compile using the batch compiler. Try to paste the unit provided in the test case inside an existing java project.
One point is that the eclipse editors are not made to edit files in the mega-byte range. A large source file like SWT's StyledText.java, which has around 9K lines, amounts to 280KBytes, while X.java is almost 2MBytes. Second, these 2MBytes are distributed on only 15 lines, the longest lines being almost 400K characters long. Very long lines are handled badly by some algorithms in StyledText and elsewhere. I see the same devastating effect when opening X.java on Linux-GTK with: - gedit (as soon as word wrap gets disabled) - vim (vi is ok) - nedit (opens ok, but hangs when one tries to get to the end of line 10) Ok are: - vi - xemacs Some tools work better with extremely long lines, notably UltraEdit caps the maximum line size to 4096 characters and forcibly wraps the lines after that, thus not needing to read more than (visible lines * 4096) of the file into memory. StyledText also seems to do something similar, but only much later: the 400K characters long line #10 appears to be wrapped (drawn over each other).
That's interesting, but I don't know if the line length is actually the problem. I can successfully paste in the longest line as a string variable and save without issue (it even compiles) within the JDT and I can run the program.
Main "hang" is in StyledText. To find problems regarding large files in Text click: https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=large&classification=Eclipse&product=JDT&product=Platform&component=Text&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= Steps: 1. put the attached file into a Java project 2. disable folding 3. open the file using Java editor (not a problem with text editor) ==> "hangs" (or loops?) minutes in: "main" prio=6 tid=0x00036810 nid=0x618 runnable [0x0007a000..0x0007fc40] at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:841) at org.eclipse.swt.custom.StyledTextRenderer.getTextLayout(StyledTextRenderer.java:673) at org.eclipse.swt.custom.StyledTextRenderer.calculate(StyledTextRenderer.java:200) at org.eclipse.swt.custom.StyledTextRenderer.calculateClientArea(StyledTextRenderer.java:218) at org.eclipse.swt.custom.StyledText.handleResize(StyledText.java:5302) at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:4840) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:949) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:930) at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:3880) at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:333) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1375) at org.eclipse.swt.widgets.Canvas.WM_SIZE(Canvas.java:303) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:703) at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:669) at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:875) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1390) at org.eclipse.swt.widgets.Canvas.WM_SIZE(Canvas.java:303) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2180) at org.eclipse.swt.custom.StackLayout.layout(StackLayout.java:116) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111) at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:198) at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:989) at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1386) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3317) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method) at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:1917) at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025) at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method) at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1222) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2133) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2115) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2111) at org.eclipse.swt.widgets.Control.setBounds(Control.java:2180) at org.eclipse.ui.internal.LayoutPart.setBounds(LayoutPart.java:300) at org.eclipse.ui.internal.presentations.PresentablePart.setBounds(PresentablePart.java:130) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layoutContent(PresentablePartFolder.java:129) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.layout(PresentablePartFolder.java:410) at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:289) at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65) at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:394) at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1144) at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1097) at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1311) at org.eclipse.ui.internal.PartStack.add(PartStack.java:455) at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:102) at org.eclipse.ui.internal.PartStack.add(PartStack.java:441) at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:111) at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:60) at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:217) at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:207) at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:819) at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:718) at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:679) at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2535) at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2470) at org.eclipse.ui.internal.WorkbenchPage.access$10(WorkbenchPage.java:2462) at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:2447) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67) at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2442) at org.eclipse.ui.actions.OpenWithMenu.openEditor(OpenWithMenu.java:288) at org.eclipse.ui.actions.OpenWithMenu.access$0(OpenWithMenu.java:280) at org.eclipse.ui.actions.OpenWithMenu$2.handleEvent(OpenWithMenu.java:184) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336) at org.eclipse.core.launcher.Main.basicRun(Main.java:280) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952) "VM Thread" prio=10 tid=0x00a833c8 nid=0x228 runnable "VM Periodic Task Thread" prio=10 tid=0x00a93398 nid=0x2dc waiting on condition
Not for 3.2.
fyi - I saw some IDE reviews, where one of the key differenciator was resilience to a 20Mb source file. Probably some corner situation to challenge in a forthcoming release.
Well, TextLayout#setStyle doesn't scale well, see bug 108813 comment 5. I think I can improve that and make this case not so bad. But, I think the Text component also should be smart here: for example, line 9 has nearly 200000 styles, all they do is to set the foreground of the numbers to black and the font of the commas to NORMAL. They are all useless. I'll try to make sure that StyledText ignores them but a better solution would be not having these objects created in the first place. *** This bug has been marked as a duplicate of 108813 ***