Description
Editor became really slow and in the end became unusable. Wasn't even able to "Send Feedback" anymore. I really don't know if the attached debug-output below can help, but just in case.
Code Assist Stats (0 proposals)
Code Assist (setup): 0
Code Assist (collect): 1851
Code Assist (sort): 3
!SESSION 2011-11-03 14:03:18.384 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0-google-v4
java.vendor=Google Inc.
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64 -consoleLog -data workspace
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:06:20.928
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/code_writer.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.io.File.getParentFile(File.java:463)
at org.eclipse.core.internal.filesystem.local.LocalFile.getParent(LocalFile.java:195)
at org.eclipse.core.internal.localstore.FileSystemResourceManager.findLinkedResourcesPaths(FileSystemResourceManager.java:158)
at org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocationNonCanonical(FileSystemResourceManager.java:124)
at org.eclipse.core.internal.localstore.FileSystemResourceManager.allPathsForLocation(FileSystemResourceManager.java:62)
at org.eclipse.core.internal.localstore.FileSystemResourceManager.allResourcesFor(FileSystemResourceManager.java:216)
at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:113)
at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:104)
at com.google.dart.tools.core.internal.util.ResourceUtil.getResources(ResourceUtil.java:106)
at com.google.dart.tools.core.internal.util.ResourceUtil.getResource(ResourceUtil.java:61)
at com.google.dart.tools.core.internal.util.ResourceUtil.getResource(ResourceUtil.java:76)
at com.google.dart.tools.core.internal.model.DartLibraryImpl.isLocal(DartLibraryImpl.java:467)
at com.google.dart.tools.core.utilities.bindings.BindingUtils.getLibraryCache(BindingUtils.java:936)
at com.google.dart.tools.core.utilities.bindings.BindingUtils.getImmediateTypes(BindingUtils.java:917)
at com.google.dart.tools.core.utilities.bindings.BindingUtils.getDartElement(BindingUtils.java:359)
at com.google.dart.tools.core.utilities.bindings.BindingUtils.getDartElement(BindingUtils.java:451)
at com.google.dart.tools.core.internal.indexer.contributor.AbstractDartContributor.getDartElement(AbstractDartContributor.java:133)
at com.google.dart.tools.core.internal.indexer.contributor.MethodInvocationContributor.processMethod(MethodInvocationContributor.java:139)
at com.google.dart.tools.core.internal.indexer.contributor.MethodInvocationContributor.visitMethodInvocation(MethodInvocationContributor.java:78)
at com.google.dart.tools.core.internal.indexer.contributor.MethodInvocationContributor.visitMethodInvocation(MethodInvocationContributor.java:1)
at com.google.dart.compiler.ast.DartMethodInvocation.accept(DartMethodInvocation.java:77)
at com.google.dart.compiler.ast.DartVariable.visitChildren(DartVariable.java:56)
at com.google.dart.tools.core.dom.visitor.ChildVisitor.visitVariable(ChildVisitor.java:129)
at com.google.dart.tools.core.dom.visitor.ChildVisitor.visitVariable(ChildVisitor.java:1)
at com.google.dart.compiler.ast.DartVariable.accept(DartVariable.java:62)
at com.google.dart.tools.core.internal.indexer.contributor.AbstractDartContributor.visitChildren(AbstractDartContributor.java:302)
at com.google.dart.tools.core.internal.indexer.contributor.AbstractDartContributor.visitNode(AbstractDartContributor.java:89)
at com.google.dart.tools.core.internal.indexer.contributor.AbstractDartContributor.visitNode(AbstractDartContributor.java:1)
at com.google.dart.compiler.ast.DartNodeTraverser.visitDeclaration(DartNodeTraverser.java:87)
at com.google.dart.compiler.ast.DartNodeTraverser.visitVariable(DartNodeTraverser.java:396)
at com.google.dart.compiler.ast.DartVariable.accept(DartVariable.java:62)
at com.google.dart.compiler.ast.DartNodeTraverser.visit(DartNodeTraverser.java:413)
!ENTRY com.google.dart.tools.core 1 0 2011-11-03 14:06:22.551
!MESSAGE Exception caught while building file:/usr/local/google/floitsch/code/dart/dart/frog/leg/elements/elements.dart
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.google.dart.compiler.parser.DartScanner$Position.clone(DartScanner.java:38)
at com.google.dart.compiler.parser.DartScanner.advance(DartScanner.java:682)
at com.google.dart.compiler.parser.DartScanner.select(DartScanner.java:1354)
at com.google.dart.compiler.parser.DartScanner.scanToken(DartScanner.java:1232)
at com.google.dart.compiler.parser.DartScanner.scanFile(DartScanner.java:752)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:490)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:466)
at com.google.dart.compiler.parser.DartScannerParserContext.createScanner(DartScannerParserContext.java:182)
at com.google.dart.compiler.parser.DartScannerParserContext.<init>(DartScannerParserContext.java:38)
at com.google.dart.compiler.parser.DartScannerParserContext.<init>(DartScannerParserContext.java:32)
at com.google.dart.compiler.ast.LibraryUnit.parseApiUnit(LibraryUnit.java:433)
at com.google.dart.compiler.ast.LibraryUnit.loadApi(LibraryUnit.java:267)
at com.google.dart.compiler.DartCompiler$Compiler.parseOutOfDateFiles(DartCompiler.java:245)
at com.google.dart.compiler.DartCompiler$Compiler.updateAndResolve(DartCompiler.java:201)
at com.google.dart.compiler.DartCompiler$Compiler.compile(DartCompiler.java:166)
at com.google.dart.compiler.DartCompiler$Compiler.access$3(DartCompiler.java:163)
at com.google.dart.compiler.DartCompiler.compileLib(DartCompiler.java:1110)
at com.google.dart.compiler.DartCompiler.compileLib(DartCompiler.java:1086)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.secureCompileLib(DartCompilerUtilities.java:737)
at com.google.dart.tools.core.internal.builder.DartBuilder.buildLibrary(DartBuilder.java:356)
at com.google.dart.tools.core.internal.builder.DartBuilder.buildAllApplications(DartBuilder.java:275)
at com.google.dart.tools.core.internal.builder.DartBuilder.build(DartBuilder.java:249)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
!ENTRY org.eclipse.ui 4 0 2011-11-03 14:06:22.552
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
at org.eclipse.swt.custom.StyledText.getSelectionRange(StyledText.java:4646)
at org.eclipse.jface.text.TextViewer.getSelectedRange(TextViewer.java:2366)
at org.eclipse.jface.text.TextViewer.getSelection(TextViewer.java:2576)
at org.eclipse.ui.texteditor.AbstractTextEditor.doGetSelection(AbstractTextEditor.java:2960)
at org.eclipse.ui.texteditor.AbstractTextEditor$SelectionProvider.getSelection(AbstractTextEditor.java:1483)
at org.eclipse.ui.internal.editors.quickdiff.QuickDiffRestoreAction.getSelection(QuickDiffRestoreAction.java:138)
at org.eclipse.ui.internal.editors.quickdiff.QuickDiffRestoreAction.computeLine(QuickDiffRestoreAction.java:170)
at org.eclipse.ui.internal.editors.quickdiff.QuickDiffRestoreAction.computeEnablement(QuickDiffRestoreAction.java:123)
at org.eclipse.ui.internal.editors.quickdiff.RevertBlockAction.computeEnablement(RevertBlockAction.java:47)
at org.eclipse.ui.internal.editors.quickdiff.QuickDiffRestoreAction.update(QuickDiffRestoreAction.java:99)
at org.eclipse.ui.internal.editors.quickdiff.CompositeRevertAction.update(CompositeRevertAction.java:65)
at org.eclipse.ui.internal.editors.quickdiff.CompositeRevertAction.selectionChanged(CompositeRevertAction.java:80)
at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2749)
at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2697)
at org.eclipse.jface.text.TextViewer$5.run(TextViewer.java:2676)
at org.eclipse.swt.widgets.Display.timerProc(Display.java:4154)
at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2258)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3207)
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 com.google.dart.tools.deploy.DartIDEApplication.start(DartIDEApplication.java:44)
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)
!ENTRY com.google.dart.tools.core 1 0 2011-11-03 14:06:58.079
!MESSAGE Exception caught while building file:/usr/local/google/floitsch/code/dart/dart/frog/lang.dart
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.ArrayList.<init>(ArrayList.java:132)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:474)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:466)
at com.google.dart.compiler.parser.DartScannerParserContext.createScanner(DartScannerParserContext.java:182)
at com.google.dart.compiler.parser.DartScannerParserContext.<init>(DartScannerParserContext.java:38)
at com.google.dart.compiler.parser.DartScannerParserContext.<init>(DartScannerParserContext.java:32)
at com.google.dart.compiler.ast.LibraryUnit.parseApiUnit(LibraryUnit.java:433)
at com.google.dart.compiler.ast.LibraryUnit.loadApi(LibraryUnit.java:267)
at com.google.dart.compiler.DartCompiler$Compiler.parseOutOfDateFiles(DartCompiler.java:245)
at com.google.dart.compiler.DartCompiler$Compiler.updateAndResolve(DartCompiler.java:201)
at com.google.dart.compiler.DartCompiler$Compiler.compile(DartCompiler.java:166)
at com.google.dart.compiler.DartCompiler$Compiler.access$3(DartCompiler.java:163)
at com.google.dart.compiler.DartCompiler.compileLib(DartCompiler.java:1110)
at com.google.dart.compiler.DartCompiler.compileLib(DartCompiler.java:1086)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.secureCompileLib(DartCompilerUtilities.java:737)
at com.google.dart.tools.core.internal.builder.DartBuilder.buildLibrary(DartBuilder.java:356)
at com.google.dart.tools.core.internal.builder.DartBuilder.buildAllApplications(DartBuilder.java:275)
at com.google.dart.tools.core.internal.builder.DartBuilder.build(DartBuilder.java:249)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:07:14.228
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/gen.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "com.google.dart.tools.ui.internal.text.functions.DartReconciler" java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY org.eclipse.ui 4 4 2011-11-03 14:07:23.807
!MESSAGE Save Failed
!ENTRY org.eclipse.ui 2 0 2011-11-03 14:07:23.808
!MESSAGE Save Failed
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:08:02.702
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/library.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:08:07.217
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/member.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.tools.core 1 0 2011-11-03 14:08:11.747
!MESSAGE Exception caught while building file:/usr/local/google/floitsch/code/dart/dart/frog/leg/scanner.dart
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:08:30.646
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/options.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.indexer 4 0 2011-11-03 14:08:38.050
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/parser.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
!ENTRY com.google.dart.tools.core 1 0 2011-11-03 14:08:39.502
!MESSAGE Exception caught while building file:/usr/local/google/floitsch/code/dart/dart/frog/leg/scanner_implementation.dart
!STACK 0
java.lang.OutOfMemoryError: GC overhead limit exceeded
Activity
stevemessick commentedon Nov 3, 2011
It would be helpful to know the number of files open in the Libraries view, how many editor tabs were open (just a guess would help), and an approximate total size in bytes of the files.
Removed Priority-Medium label.
Added Priority-High, Usability labels.
floitschG commentedon Nov 3, 2011
number of files open: the leg library. (more or less 40 files) + the frog library (another 50? files).
number of open editor tabs: 5? (rather small number).
leg: $ find . -name '.dart' | xargs cat | wc
6930 17310 244370
frog (includes leg) $ find . -name '.dart' | xargs cat | wc
50056 158705 1476293
floitschG commentedon Nov 3, 2011
Just happened again.
This time I payed attention: 3 editor views with 3, (5 + 8), 1 files open.
Indexer was stuck at 0% for some time. However somehow it was able to recover.
Here is just part of the debug-out.
!ENTRY com.google.dart.indexer 4 0 2011-11-03 15:53:52.857
!MESSAGE Unexpected Exception
!STACK 0
com.google.dart.indexer.workspace.index.TargetIndexingFailed: Failed to index file (first attempt): file:/usr/local/google/floitsch/code/dart/dart/frog/leg/ssa/tracer.dart
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:482)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.doIndexPendingFiles(WorkspaceIndexer.java:407)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexPendingFiles(WorkspaceIndexer.java:234)
at com.google.dart.indexer.workspace.driver.WorkspaceIndexingDriver$IndexingJob.run(WorkspaceIndexingDriver.java:60)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.google.dart.compiler.parser.DartScanner$Position.clone(DartScanner.java:38)
at com.google.dart.compiler.parser.DartScanner.advance(DartScanner.java:677)
at com.google.dart.compiler.parser.DartScanner.select(DartScanner.java:1354)
at com.google.dart.compiler.parser.DartScanner.scanToken(DartScanner.java:1256)
at com.google.dart.compiler.parser.DartScanner.scanFile(DartScanner.java:752)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:490)
at com.google.dart.compiler.parser.DartScanner.<init>(DartScanner.java:466)
at com.google.dart.compiler.parser.DartScannerParserContext.createScanner(DartScannerParserContext.java:182)
at com.google.dart.compiler.parser.DartScannerParserContext.<init>(DartScannerParserContext.java:38)
at com.google.dart.compiler.DartCompiler$Compiler.parse(DartCompiler.java:808)
at com.google.dart.compiler.DartCompiler$SelectiveCompiler.parse(DartCompiler.java:859)
at com.google.dart.compiler.DartCompiler$Compiler.parseOutOfDateFiles(DartCompiler.java:260)
at com.google.dart.compiler.DartCompiler$Compiler.updateAndResolve(DartCompiler.java:201)
at com.google.dart.compiler.DartCompiler$Compiler.access$4(DartCompiler.java:190)
at com.google.dart.compiler.DartCompiler.analyzeLibrary(DartCompiler.java:1165)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.secureAnalyzeLibrary(DartCompilerUtilities.java:725)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities$ResolverRunnable.run(DartCompilerUtilities.java:421)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities$CompilerRunner.runSafe(DartCompilerUtilities.java:92)
at com.google.dart.tools.core.utilities.compiler.DartCompilerUtilities.resolveLibrary(DartCompilerUtilities.java:583)
at com.google.dart.tools.core.internal.util.ASTCache.getAST(ASTCache.java:116)
at com.google.dart.tools.core.internal.indexer.contributor.DartProcessor.processTarget(DartProcessor.java:103)
at com.google.dart.indexer.index.IndexTransaction.indexTarget(IndexTransaction.java:111)
at com.google.dart.indexer.workspace.index.WorkspaceIndexer.indexTarget(WorkspaceIndexer.java:474)
... 4 more
stevemessick commentedon Nov 3, 2011
Thanks for the info, Florian. You're using the 64-bit linux distro, I assume. If you want to stop getting the OOM error you can change the memory allocation in your DartEditor.ini. I thought we were going to eliminate the custom memory allocation flags, but I see that they are still there, so you might try deleting the last three lines of DartEditor.ini. You could try using different values (like +Xmx1024M). Or you might try adding +XX:UseConcMarkSweepGC.
Aside: I investigate the Mac JVM arguments and found that none of the more esoteric options had any effect because the best ones were already enabled. I don't think anyone has had a chance to do the same for linux yet. OTOH I wasn't working with MBs of source, either, so I should probably do it all over.
bwilkerson commentedon Nov 4, 2011
Set owner to @bwilkerson.
Added Accepted label.
bwilkerson commentedon Nov 4, 2011
Set owner to @danrubel.
danrubel commentedon Nov 7, 2011
ClassElementImplementation contains a ThreadLocal<Set<Element>> static field named "seenSupertypes" which is used in the #computeAllSupertypes() method. If this method should throw an exception, such as CyclicDeclarationException, the element added to this set at the beginning of this method would never be removed, thus causing the Dart Editor to slowly leak memory. The solution implemented in http://codereview.chromium.org/8477025/ is to use try/finally to ensure that the element is removed from the set.
DartBot commentedon Nov 7, 2011
This comment was originally written by mmendez@google.com
That definitely seems like a problem, but were cyclic declarations at play in the code that triggered it?
danrubel commentedon Nov 7, 2011
All I have wrt CyclicDeclarationException is circumstantial evidence. computeAllSupertypes() the only method touching that static field and the memory dump from Florian definitely implicates the static field named "seenSupertypes". If any exception was thrown, a leak would occur.
danrubel commentedon Nov 7, 2011
Fixed in the latest continuous build.
Please let me know if you see this again.
Thanks!
Set owner to @floitschG.
Added Fixed label.
9 remaining items