Please use the Apache issue tracking system for new NetBeans issues (https://issues.apache.org/jira/projects/NETBEANS0/issues) !!
Bug 124716 - Memory leak in main explorer
Memory leak in main explorer
Status: RESOLVED FIXED
Product: platform
Classification: Unclassified
Component: Explorer
6.x
All All
: P2 (vote)
: 6.x
Assigned To: Jaroslav Tulach
issues@platform
perfleak
: PERFORMANCE, TEST
Depends on:
Blocks: 121855
  Show dependency treegraph
 
Reported: 2008-01-04 15:21 UTC by Jaroslav Tulach
Modified: 2008-12-22 12:10 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jaroslav Tulach 2008-01-04 15:21:47 UTC
After running test described in issue 121855, one gets following leak:

private static org.netbeans.core.NbMainExplorer$MainTab org.netbeans.core.NbMainExplorer$MainTab.lastActivated->
org.netbeans.core.NbMainExplorer$MainTab@ada1dc-parent->
javax.swing.JPanel@1a32ada-component->
[Ljava.awt.Component;@1fc2002-[0]->
org.netbeans.modules.project.ui.ProjectTab@7badec-manager->
org.openide.explorer.ExplorerManager@63e4e6-exploredContext->
org.openide.nodes.FilterNode@13b58c4-parent->
org.openide.nodes.ChildrenArray@198e51c-children->
org.openide.nodes.FilterNode$Children@15579a1-original->
org.netbeans.modules.java.j2seproject.ui.SourceNodeFactory$PackageViewFilterNode@1009d67-project->
org.netbeans.modules.java.j2seproject.J2SEProject@1ad37f6
Comment 1 David Simonek 2008-01-09 08:50:47 UTC
Belongs to explorer maintainers I think, passing there...
Comment 2 Jaroslav Tulach 2008-01-11 09:40:37 UTC
the performance team would like to ask your teams for help with making memory 
leak tests part of the commit validation.

One of the main performance goals for 6.1 is to fix memory leaks in main use 
cases and prevent regressions in future. As the first step the performance 
team plans to extend the commit validation tests by checking whether certain 
important data structures are freed from memory after the tests finish.

All leaks found so far are filed under 121855 umbrella issue:
http://openide.netbeans.org/issues/showdependencytree.cgi?id=121855

As you can see, the number of issues is not high (14 at this moment, some of 
them already fixed). We need to fix the rest - and fix leaks that appear in 
the future preferentially (as part of commit validation). Thus we will make 
the issues of P2 priority.
Comment 3 Petr Nejedly 2008-01-11 15:07:30 UTC
This looks like if some node beneath the package view node stayed as the explored context of the explorer!?
Comment 4 Jaroslav Tulach 2008-01-16 21:39:37 UTC
I fixed this one as part of issue 124712, but now there is a new one, related to some swing caches:

private static org.netbeans.core.NbMainExplorer$MainTab org.netbeans.core.NbMainExplorer$MainTab.lastActivated->
org.netbeans.core.NbMainExplorer$MainTab@43b164-parent->
javax.swing.JPanel@1cdfe45-component->
[Ljava.awt.Component;@1b6f3bc-[1]->
org.netbeans.modules.project.ui.ProjectTab@1cdc4a5-btv->
org.netbeans.modules.project.ui.ProjectTab$ProjectTreeView@3db926-tree->
org.openide.explorer.view.TreeView$ExplorerTree@13f4ba2-ui->
javax.swing.plaf.metal.MetalTreeUI@debf90-drawingCache->
java.util.Hashtable@1172140-table->
[Ljava.util.Hashtable$Entry;@56b08c-[6]->
java.util.Hashtable$Entry@18bd64f-key->
javax.swing.tree.TreePath@1bd98c9-lastPathComponent->
org.openide.explorer.view.VisualizerNode@16900eb-node->
org.netbeans.modules.project.ui.ProjectsRootNode$BadgingNode@14d99fe-listeners->
org.openide.nodes.Node$LookupEventList@fb08e-lookup->
org.netbeans.modules.project.ui.ProjectsRootNode$BadgingLookup@1094ba2-lookups->
org.openide.util.lookup.ProxyLookup@184ffa-lookups->
[Lorg.openide.util.Lookup;@150e545-[1]->
org.openide.util.lookup.SimpleLookup@a2b064-allItems->
java.util.ArrayList@2b465-elementData->
[Ljava.lang.Object;@11f66e6-[0]->
org.openide.util.lookup.InstanceContent$SimpleItem@1e76511-obj->
org.netbeans.modules.java.j2seproject.J2SEProject@c6d247
Comment 5 Jaroslav Tulach 2008-01-24 13:17:44 UTC
Making P2 as previously announced.
Comment 6 Antonin Nebuzelsky 2008-02-07 16:05:31 UTC
Reassigning to new module owner Tomas Holy.
Comment 7 t_h 2008-02-20 10:49:12 UTC
Reassigning to Jarda on his request.

junit.framework.AssertionFailedError: Checking if all projects are really garbage collected Project:
private static final org.openide.loaders.DataFilter
org.netbeans.modules.project.ui.PhysicalView$GroupNode.VISIBILITY_QUERY_FILTER->
org.netbeans.modules.project.ui.PhysicalView$VisibilityQueryDataFilter@c835ba-changeSupport->
org.openide.util.ChangeSupport@15af02e-listeners->
java.util.concurrent.CopyOnWriteArrayList@931667-array->
[Ljava.lang.Object;@19535b3-[0]->
org.openide.loaders.FolderChildren@a36729-parent->
org.netbeans.modules.project.ui.PhysicalView$GroupNode@16700b3-pi->
org.netbeans.modules.java.j2seproject.J2SEProject$Info@6b11f2-this$0->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static org.netbeans.modules.navigator.NavigatorTC org.netbeans.modules.navigator.NavigatorTC.instance->
org.netbeans.modules.navigator.NavigatorTC@1607b27-activatedNodes->
[Lorg.openide.nodes.Node;@1c6b81-[0]->
org.openide.nodes.FilterNode@1a7c7d7-original->
org.netbeans.modules.java.JavaNode@1253dfb-status->
org.netbeans.spi.project.support.ant.GlobFileBuiltQuery$StatusImpl@701d1e-this$0->
org.netbeans.spi.project.support.ant.GlobFileBuiltQuery@1111c97-helper->
org.netbeans.spi.project.support.ant.AntProjectHelper@105ba85-state->
org.netbeans.api.project.ProjectManager$ProjectStateImpl@e7ecfe-p->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static final java.util.Map org.openide.util.lookup.MetaInfServicesLookup.knownInstances->
java.util.WeakHashMap@1daa34-table->
[Ljava.util.WeakHashMap$Entry;@d46238-[466]->
java.util.WeakHashMap$Entry@d8143a-value->
org.netbeans.modules.java.navigation.ClassMemberNavigatorJavaSourceFactory@1b985f8-file2JS->
java.util.HashMap@11104ce-table->
[Ljava.util.HashMap$Entry;@debed3-[7]->
java.util.HashMap$Entry@1f28092-value->
org.netbeans.api.java.source.JavaSource@14d6695-classpathInfo->
org.netbeans.api.java.source.ClasspathInfo@32e0f8-srcClassPath->
org.netbeans.api.java.classpath.ClassPath@160f22d-impl->
org.netbeans.modules.java.j2seproject.classpath.SourcePathImplementation@e29377-sourceRoots->
org.netbeans.modules.java.api.common.SourceRoots@1970a06-helper->
org.netbeans.modules.java.api.common.ant.UpdateHelper@2a64a0-updateProject->
org.netbeans.modules.java.j2seproject.UpdateProjectImpl@3a036-project->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static org.netbeans.jellytools.MainWindowOperator
org.netbeans.jellytools.MainWindowOperator.defaultMainWindowOperator->
org.netbeans.jellytools.MainWindowOperator@1c807d8-_menuBar->
org.netbeans.jemmy.operators.JMenuBarOperator@ff0691-source->
org.openide.awt.MenuBar@af26de-component->
[Ljava.awt.Component;@e86c61-[6]->
org.openide.awt.MenuBar$LazyMenu@1c8e35a-popupMenu->
javax.swing.JPopupMenu@831c7-component->
[Ljava.awt.Component;@463490-[2]->
org.netbeans.modules.project.ui.actions.ActiveConfigAction$ConfigMenu@d5ba3a-popupMenu->
javax.swing.JPopupMenu@1bc1010-component->
[Ljava.awt.Component;@afed70-[2]->
javax.swing.JMenuItem@dbf2d7-listenerList->
javax.swing.event.EventListenerList@1bc4dbd-listenerList->
[Ljava.lang.Object;@1c5d8ce-[3]->
org.netbeans.modules.project.ui.actions.ActiveConfigAction$ConfigMenu$2@11fef52-val$pcp->
org.netbeans.modules.java.j2seproject.J2SEConfigurationProvider@1a2ed40-p->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static org.netbeans.core.NbMainExplorer$MainTab org.netbeans.core.NbMainExplorer$MainTab.lastActivated->
org.netbeans.core.NbMainExplorer$MainTab@1b6cb5d-parent->
javax.swing.JPanel@1f210cf-component->
[Ljava.awt.Component;@2c726e-[1]->
org.netbeans.modules.project.ui.ProjectTab@1ed3da1-btv->
org.netbeans.modules.project.ui.ProjectTab$ProjectTreeView@f5268c-tree->
org.openide.explorer.view.TreeView$ExplorerTree@1474776-ui->
javax.swing.plaf.metal.MetalTreeUI@145a736-drawingCache->
java.util.Hashtable@1410d6b-table->
[Ljava.util.Hashtable$Entry;@101fee3-[0]->
java.util.Hashtable$Entry@148e15b-key->
javax.swing.tree.TreePath@1169480-lastPathComponent->
org.openide.explorer.view.VisualizerNode@401fe-node->
org.netbeans.modules.project.ui.ProjectsRootNode$BadgingNode@9e0714-pair->
org.netbeans.modules.project.ui.ProjectsRootNode$ProjectChildren$Pair@fbcdf0-project->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static javax.swing.text.html.StyleSheet javax.swing.text.html.HTMLEditorKit.defaultStyles->
javax.swing.text.html.StyleSheet@1fe1f98-css->
javax.swing.text.html.CSS@89fc13-styleSheet->
javax.swing.text.html.StyleSheet@2fa860-styles->
javax.swing.text.StyleContext$NamedStyle@16283c8-listenerList->
javax.swing.event.EventListenerList@1b7f740-listenerList->
[Ljava.lang.Object;@364764-[1]->
javax.swing.text.DefaultStyledDocument$StyleContextChangeHandler@bafaea-this$0->
javax.swing.text.html.HTMLDocument@4efe93-listenerList->
javax.swing.event.EventListenerList@77da20-listenerList->
[Ljava.lang.Object;@1626392-[1]->
javax.swing.text.DefaultCaret$Handler@5f9332-this$0->
javax.swing.plaf.basic.BasicTextUI$BasicCaret@d6a756-component->
javax.swing.JEditorPane@c825e5-parent->
javax.swing.JViewport@d76855-parent->
javax.swing.JScrollPane@114f086-parent->
org.netbeans.modules.project.ui.TemplatesPanelGUI@16a9bf-parent->
org.netbeans.modules.project.ui.TemplateChooserPanelGUI@33570c-project->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static final java.util.Map org.netbeans.api.java.source.JavaSource.finishedRequests->
java.util.WeakHashMap@1502922-table->
[Ljava.util.WeakHashMap$Entry;@bc0c0b-[7]->
java.util.WeakHashMap$Entry@9b821b-value->
java.util.LinkedList@155a57b-header->
java.util.LinkedList$Entry@16e58c5-next->
java.util.LinkedList$Entry@e479d6-element->
org.netbeans.api.java.source.JavaSource$Request@1b63f16-task->
org.netbeans.modules.java.navigation.ElementScanningTask@1a09201-pos->
java.util.HashMap@18c7483-table->
[Ljava.util.HashMap$Entry;@6f2372-[9]->
java.util.HashMap$Entry@720220-key->
com.sun.tools.javac.code.Symbol$ClassSymbol@12fd69c-owner->
com.sun.tools.javac.code.Symbol$PackageSymbol@103973d-owner->
com.sun.tools.javac.code.Symbol$PackageSymbol@50dc22-completer->
org.netbeans.modules.java.source.usages.SymbolClassReader@1219731-fileManager->
org.netbeans.modules.java.source.parsing.ProxyFileManager@12ec603-bootPath->
org.netbeans.modules.java.source.parsing.CachingFileManager@47383e-cp->
org.netbeans.api.java.classpath.ClassPath@1db256e-impl->
org.netbeans.modules.java.source.classpath.CacheClassPath@9e1504-cp->
org.netbeans.api.java.classpath.ClassPath@8d5d46-impl->
org.netbeans.modules.java.j2seproject.classpath.BootClassPathImplementation@b346c0-evaluator->
org.netbeans.spi.project.support.ant.PropertyUtils$SequentialPropertyEvaluator@14f0907-listeners->
java.util.ArrayList@7fd3d6-elementData->
[Ljava.lang.Object;@7ca334-[12]->
org.netbeans.modules.java.j2seproject.MainClassUpdater@13882eb-project->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a

private static org.netbeans.modules.javahelp.JavaHelp org.netbeans.modules.javahelp.Installer.help->
org.netbeans.modules.javahelp.JavaHelp@1aedf49-lastJH->
javax.help.JHelp@1c6344b-contentViewer->
javax.help.JHelpContentViewer@1e2a603-ui->
javax.help.plaf.basic.BasicContentViewerUI@43995d-vp->
javax.swing.JViewport@1c8295b-componentListener->
javax.swing.text.html.HTMLEditorKit$HTMLFactory$BodyBlockView@15c9af7-attr->
javax.swing.text.html.StyleSheet$ViewAttributeSet@279ebd-attrs->
[Ljavax.swing.text.AttributeSet;@1d49a8c-[0]->
javax.swing.text.html.StyleSheet$ResolvedStyle@1c1e3f5-attrs->
[Ljavax.swing.text.AttributeSet;@670f41-[1]->
javax.swing.text.html.StyleSheet$ResolvedStyle@12a5d65-attrs->
[Ljavax.swing.text.AttributeSet;@32b492-[1]->
javax.swing.text.html.StyleSheet$ResolvedStyle@17c4636-attrs->
[Ljavax.swing.text.AttributeSet;@15fb7fb-[0]->
javax.swing.text.StyleContext$NamedStyle@1892c59-this$0->
javax.swing.text.html.StyleSheet@cf712b-css->
javax.swing.text.html.CSS@10c7678-styleSheet->
javax.swing.text.html.StyleSheet@6ec40-styles->
javax.swing.text.StyleContext$NamedStyle@794009-listenerList->
javax.swing.event.EventListenerList@d84abe-listenerList->
[Ljava.lang.Object;@15b2d03-[1]->
javax.swing.text.DefaultStyledDocument$StyleContextChangeHandler@9c2b6b-this$0->
javax.swing.text.html.HTMLDocument@6b540f-listenerList->
javax.swing.event.EventListenerList@1fa1506-listenerList->
[Ljava.lang.Object;@1490874-[1]->
javax.swing.text.DefaultCaret$Handler@924c62-this$0->
javax.swing.plaf.basic.BasicTextUI$BasicCaret@65943e-component->
javax.swing.JEditorPane@c18de6-parent->
javax.swing.JViewport@86e792-parent->
javax.swing.JScrollPane@15e73e7-parent->
org.netbeans.modules.project.ui.TemplatesPanelGUI@987248-parent->
org.netbeans.modules.project.ui.TemplateChooserPanelGUI@c481c5-project->
org.netbeans.modules.java.j2seproject.J2SEProject@3cd21a
	at junit.framework.Assert.fail(Assert.java:47)
	at org.netbeans.junit.NbTestCase.assertGC(NbTestCase.java:1203)
	at org.netbeans.junit.NbTestCase.assertGC(NbTestCase.java:1152)
	at org.netbeans.junit.Log$InstancesHandler.assertGC(Log.java:401)
	at org.netbeans.junit.Log.assertInstances(Log.java:222)
	at org.netbeans.test.ide.WatchProjects.assertProjects(WatchProjects.java:101)
	at org.netbeans.test.ide.IDEValidation.testGCProjects(IDEValidation.java:1401)
	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 junit.framework.TestCase.runTest(TestCase.java:164)
	at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:83)
	at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:314)
	at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:252)
	at org.netbeans.junit.NbTestCase.runBare(NbTestCase.java:330)
	at org.netbeans.jellytools.JellyTestCase.runBare(JellyTestCase.java:144)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at org.netbeans.junit.NbTestCase.run(NbTestCase.java:192)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at org.netbeans.xtest.testrunner.JUnitTestRunner.runTests(JUnitTestRunner.java:191)
	at org.netbeans.xtest.testrunner.JUnitTestRunner.runTests(JUnitTestRunner.java:146)
	at org.netbeans.xtest.plugin.ide.MainWithExec.run(MainWithExec.java:108)
	at org.netbeans.xtest.plugin.ide.Main$3.run(Main.java:326)
	at java.lang.Thread.run(Thread.java:595)
Comment 8 Jaroslav Tulach 2008-02-22 13:43:33 UTC
I have fixed the test to clear all UI peers from existing JTrees.

changeset:   68110:39ab15eebc3e
user:        Jaroslav Tulach <jtulach@netbeans.org>
date:        Fri Feb 22 11:00:04 2008 +0100
summary:     JTree UI keeps reference to invisible nodes due to some "drawingCache"


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo