Community
Participate
Working Groups
1. Self hosting workspace 2. Search for references to method java.lang.Object.toString() 3. Took snapshot with OptimizeIt during memory peak: Allocation backtraces for class char[]. application org.eclipse.core.launcher.UIMain ------------------------------------------------------------------------------------ Backtrace of code allocating char[] ----------------------------------- 218986 instances of char[] allocated. 81.1% org.eclipse.jface.operation.ModalContext$ModalContextThread.run() (starting in ModalContext.java:95) 81.1% org.eclipse.ui.actions.WorkspaceModifyOperation.run() (starting in WorkspaceModifyOperation.java:58) 81.1% org.eclipse.core.internal.resources.Workspace.run() (starting in Workspace.java:1114) 81.1% org.eclipse.ui.actions.WorkspaceModifyOperation$1.run() (starting in WorkspaceModifyOperation.java:62) 81.1% org.eclipse.jdt.internal.ui.search.JavaSearchOperation.execute() (starting in JavaSearchOperation.java:54) 81.1% org.eclipse.jdt.core.search.SearchEngine.search() (starting in SearchEngine.java:190) 81.09% org.eclipse.jdt.core.search.SearchEngine.search() (starting in SearchEngine.java:237) 76.55% org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches() (starting in MatchLocator.java:209) 75.13% org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatchesInCompilationUnit() (starting in MatchLocator.java:408) 42.5% org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes() (starting in CompilationUnitScope.java:272) 17.4% org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve() (starting in CompilationUnitDeclaration.java:184) 11.31% org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings() (starting in LookupEnvironment.java:208) 2.71% org.eclipse.jdt.internal.core.search.matching.MatchLocatorParser.parse() (starting in MatchLocatorParser.java:81) 0.84% org.eclipse.jdt.internal.core.search.matching.MatchSet.reportMatching() (starting in MatchSet.java:126) 0.17% org.eclipse.jdt.internal.core.search.matching.MatchLocator.getContents() (starting in MatchLocator.java:173) 0.16% org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.buildTypeBindings() (starting in LookupEnvironment.java:108) 0.01% org.eclipse.core.internal.resources.Resource.toString() (starting in Resource.java:928) 0.0% org.eclipse.jdt.internal.compiler.CompilationResult.CompilationResult() (starting in CompilationResult.java:40) 0.0% java.lang.String.toCharArray() (starting in String.java:1899) 0.0% java.lang.ClassLoader.loadClassInternal() (starting in ClassLoader.java:314) 0.94% org.eclipse.jdt.internal.core.search.matching.MatchLocator.createParser() (starting in MatchLocator.java:757) 0.28% org.eclipse.jdt.internal.core.HandleFactory.createOpenable() (starting in HandleFactory.java:50) 0.19% org.eclipse.jdt.internal.core.Openable.getUnderlyingResource() (starting in Openable.java:201) 0.0% java.lang.ClassLoader.loadClassInternal() (starting in ClassLoader.java:314) 4.31% org.eclipse.jdt.internal.ui.search.JavaSearchResultCollector.aboutToStart() (starting in JavaSearchResultCollector.java:71) 0.22% org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob() (starting in JobManager.java:130) 0.0% java.lang.ClassLoader.loadClassInternal() (starting in ClassLoader.java:314) 0.0% org.eclipse.core.runtime.SubProgressMonitor.worked() (starting in SubProgressMonitor.java:133) 0.0% org.eclipse.jdt.core.search.SearchEngine.createSearchPattern() (starting in SearchEngine.java:127) 0.0% org.eclipse.jface.operation.AccumulatingProgressMonitor.beginTask() (starting in AccumulatingProgressMonitor.java:85) 0.0% org.eclipse.core.internal.utils.Policy.subMonitorFor() (starting in Policy.java:130) 0.0% org.eclipse.core.internal.resources.Workspace.prepareOperation() (starting in Workspace.java:1070) 0.0% java.lang.ClassLoader.loadClassInternal() (starting in ClassLoader.java:314) 15.19% intuitive.audit.Audit.main() (implemented in Audit.java) 3.69% java.lang.Thread.run() (starting in Thread.java:477) 0.0% org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run() (starting in JavaReconciler.java:103) Allocation backtraces for class Object[]. application org.eclipse.core.launcher.UIMain -------------------------------------------------------------------------------------- Backtrace of code allocating Object[] ------------------------------------- 29549 instances of Object[] allocated. 48.16% org.eclipse.jface.operation.ModalContext$ModalContextThread.run() (starting in ModalContext.java:95) 48.16% org.eclipse.ui.actions.WorkspaceModifyOperation.run() (starting in WorkspaceModifyOperation.java:58) 48.16% org.eclipse.core.internal.resources.Workspace.run() (starting in Workspace.java:1114) 48.16% org.eclipse.ui.actions.WorkspaceModifyOperation$1.run() (starting in WorkspaceModifyOperation.java:62) 48.16% org.eclipse.jdt.internal.ui.search.JavaSearchOperation.execute() (starting in JavaSearchOperation.java:54) 48.16% org.eclipse.jdt.core.search.SearchEngine.search() (starting in SearchEngine.java:190) 48.15% org.eclipse.jdt.core.search.SearchEngine.search() (starting in SearchEngine.java:237) 45.38% org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches() (starting in MatchLocator.java:209) 43.98% org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatchesInCompilationUnit() (starting in MatchLocator.java:408) 21.71% org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes() (starting in CompilationUnitScope.java:272) 13.79% org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve() (starting in CompilationUnitDeclaration.java:184) 5.64% org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings() (starting in LookupEnvironment.java:208) 2.3% org.eclipse.jdt.internal.core.search.matching.MatchSet.reportMatching() (starting in MatchSet.java:126) 0.33% org.eclipse.jdt.internal.core.search.matching.MatchLocatorParser.parse() (starting in MatchLocatorParser.java:81) 0.16% org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.buildTypeBindings() (starting in LookupEnvironment.java:108) 0.01% org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.reset() (starting in LookupEnvironment.java:535) 0.0% org.eclipse.jdt.internal.core.search.matching.MatchSet.MatchSet() (starting in MatchSet.java:26) 0.0% org.eclipse.jdt.internal.compiler.CompilationResult.CompilationResult() (starting in CompilationResult.java:40) 0.0% org.eclipse.jdt.internal.core.search.matching.MatchSet class initialization (starting in MatchSet.java:20) 1.39% org.eclipse.jdt.internal.core.search.matching.MatchLocator.createParser() (starting in MatchLocator.java:757) 0.0% org.eclipse.jdt.internal.core.HandleFactory.createOpenable() (starting in HandleFactory.java:50) 2.74% org.eclipse.jdt.internal.ui.search.JavaSearchResultCollector.aboutToStart() (starting in JavaSearchResultCollector.java:71) 0.01% org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob() (starting in JobManager.java:130) 0.0% org.eclipse.core.runtime.SubProgressMonitor.worked() (starting in SubProgressMonitor.java:133) 0.0% org.eclipse.jdt.internal.core.search.PathCollector.getPaths() (starting in PathCollector.java:115) 0.0% org.eclipse.jdt.core.search.SearchEngine.createSearchPattern() (starting in SearchEngine.java:127) 47.02% intuitive.audit.Audit.main() (implemented in Audit.java) 4.8% java.lang.Thread.run() (starting in Thread.java:477) 0.0% org.eclipse.jdt.internal.ui.text.JavaReconciler$BackgroundThread.run() (starting in JavaReconciler.java:103) NOTES: JBL (6/1/2001 1:54:20 PM) MatchLocator resets the namelookup for each compilation unit it resolves (this is needed because a previous resolve may have put incomplete bindings in the cache and this binding are needed by the current resolve) Unfortunately, there is no simple way to fix this problem this late in the game. This will have to be done post-June.
PRODUCT VERSION: SDK 116
Performance tuning.
The same NameLookup is now kept while resolving matches in a project. Also the name environement is now a FileSystem name environment that avoids populating the Java Model.