Bug 3261 - Search - Memory peak during search (1GEN17L)
Summary: Search - Memory peak during search (1GEN17L)
Status: RESOLVED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.0   Edit
Hardware: All Windows 2000
: P2 normal (vote)
Target Milestone: 2.0 M4   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2001-10-10 22:52 EDT by Jerome Lanneluc CLA
Modified: 2002-03-07 10:16 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jerome Lanneluc CLA 2001-10-10 22:52:11 EDT
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.
Comment 1 DJ Houghton CLA 2001-10-23 23:53:19 EDT
PRODUCT VERSION:
	SDK 116

Comment 2 Jerome Lanneluc CLA 2002-02-04 06:40:27 EST
Performance tuning.
Comment 3 Jerome Lanneluc CLA 2002-03-07 10:16:35 EST
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.