-
Bug
-
Resolution: Fixed
-
P2
-
fx2.0
TreeView$TreeViewBitSetSelectionModel.selectedIndicesSeq.observers list constantly grows
every time we do expand/collapse TreeView.
The problem always existed but was noted only afterRT-15312 "Inefficient implementation of TreeItem expand/collapse"
has been fixed (in b2563). This performance improvement did speed up the memory leak.
As result max memory usage of Controls.TreeView-Expand benchmark is increased significantly in b2563
comparing to b2561:
http://aurora.russia.sun.com/performance/faces/ChessBoard.xhtml?reportName=FX2-graphics-scrum¶meters=%5Bshownbenchmarks%5D%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand%27%29OR%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand.JFX_PULSES%27%29OR%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand.MAX_MEMORY_USAGE%27%29%5Brefrelease%5D2.0%5Brefbuild%5D%3D+%272561%27%5Brefjdkrelease%5D1.6.0_23%5Brelease%5D%28pr.product.productRelease+IS+NOT+NULL%29%5Bbuild%5D%28pr.product.build+%3D+%272561%27%29OR%28pr.product.build+%3D+%272563%27%29%5Bjdkrelease%5D%28jdk.product.productRelease+IS+NOT+NULL%29&splitting=%5BX+axis%5DfxConf%2C+metricName%5BComplement%5Dbenchmark%2C+jdkBuild%2C+jdk%5BY+axis%5DbenchmarkName%2C+benchmarkConf%2C+fxRelease%2C+fxBuild%5BZ+axis%5Dos%2C+hwclass%2C+jdkRelease%2C+benchmarkSuite&reference=%5BOthers%5DfxRelease%2C+fxBuild%2C+jdkRelease%2C+jdkBuild%2C+jdk%2C+benchmarkSuite%2C+benchmarkName%2C+metricName%5BReference+Set%5Dbenchmark%2C+os%2C+benchmarkConf%2C+fxConf%2C+hwclass&mixReference=false&flags=&significance=empty&hideDataConfiguration=false&calculateSummary=false&showSummaryExpanded=false&showSummaryContents=true&showComplementAttributes=false&compactTables=true&viewStyle=chessboard&filter=
Running Controls.TreeViewExpand test for 30 seconds results in 14,858 elements in
TreeView$TreeViewBitSetSelectionModel.selectedIndicesSeq.observers.
The simplified test case to demonstrate the problem is attached.
The test fails with OOM in less than one minute in case of small heap size.
> java -Xmx32m -verbose:gc -cp "rt/lib/jfxrt.jar" TreeViewExpandPerfTest
Note, the test just does expand/collapse tree view on every pulse without any objects allocation.
So, no any memory growth/leak should be observed at all.
every time we do expand/collapse TreeView.
The problem always existed but was noted only after
has been fixed (in b2563). This performance improvement did speed up the memory leak.
As result max memory usage of Controls.TreeView-Expand benchmark is increased significantly in b2563
comparing to b2561:
http://aurora.russia.sun.com/performance/faces/ChessBoard.xhtml?reportName=FX2-graphics-scrum¶meters=%5Bshownbenchmarks%5D%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand%27%29OR%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand.JFX_PULSES%27%29OR%28benchmarkresults.name+%3D+%27Controls.TreeView-Expand.MAX_MEMORY_USAGE%27%29%5Brefrelease%5D2.0%5Brefbuild%5D%3D+%272561%27%5Brefjdkrelease%5D1.6.0_23%5Brelease%5D%28pr.product.productRelease+IS+NOT+NULL%29%5Bbuild%5D%28pr.product.build+%3D+%272561%27%29OR%28pr.product.build+%3D+%272563%27%29%5Bjdkrelease%5D%28jdk.product.productRelease+IS+NOT+NULL%29&splitting=%5BX+axis%5DfxConf%2C+metricName%5BComplement%5Dbenchmark%2C+jdkBuild%2C+jdk%5BY+axis%5DbenchmarkName%2C+benchmarkConf%2C+fxRelease%2C+fxBuild%5BZ+axis%5Dos%2C+hwclass%2C+jdkRelease%2C+benchmarkSuite&reference=%5BOthers%5DfxRelease%2C+fxBuild%2C+jdkRelease%2C+jdkBuild%2C+jdk%2C+benchmarkSuite%2C+benchmarkName%2C+metricName%5BReference+Set%5Dbenchmark%2C+os%2C+benchmarkConf%2C+fxConf%2C+hwclass&mixReference=false&flags=&significance=empty&hideDataConfiguration=false&calculateSummary=false&showSummaryExpanded=false&showSummaryContents=true&showComplementAttributes=false&compactTables=true&viewStyle=chessboard&filter=
Running Controls.TreeViewExpand test for 30 seconds results in 14,858 elements in
TreeView$TreeViewBitSetSelectionModel.selectedIndicesSeq.observers.
The simplified test case to demonstrate the problem is attached.
The test fails with OOM in less than one minute in case of small heap size.
> java -Xmx32m -verbose:gc -cp "rt/lib/jfxrt.jar" TreeViewExpandPerfTest
Note, the test just does expand/collapse tree view on every pulse without any objects allocation.
So, no any memory growth/leak should be observed at all.
- is blocked by
-
JDK-8114276 Memory leak in PaintRunnable: root.removed is not cleared
- Closed