-
Bug
-
Resolution: Fixed
-
P3
-
8
There are following regressions in build 3.0-controls-scrum-58:
Controls.TreeView-Expand: 9.45 fps -95% (-174.37 fps)
NodeMemory.TreeItem: 203 objects -100% (-83,237.00 objects)
Running Controls.TreeView-Expand shows that we started to spend a lot of time in GC by collecting
the garbage. There is no memory leak, we just create a lot of young garbage on every pulse.
I looked at heap dump files from NodeMemory.TreeItem and I see that there are a lot of TreeCell
objects being created (TreeView$12). I have instrumented TreeCell constructor and printed the number of
time we create TreeCell objects. Here are the results of running NodeMemory.TreeItem with different options.
> cd tests/performance/NodeMemory
> ant
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 1 -allocMax 1
TreeCell objects created: 43
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 10 -allocMax 10
TreeCell objects created: 211
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 20 -allocMax 20
TreeCell objects created: 421
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 100 -allocMax 100
TreeCell objects created: 2101
It looks like we do some unnecessary allocations which significantly affect performance and footprint.
Controls.TreeView-Expand: 9.45 fps -95% (-174.37 fps)
NodeMemory.TreeItem: 203 objects -100% (-83,237.00 objects)
Running Controls.TreeView-Expand shows that we started to spend a lot of time in GC by collecting
the garbage. There is no memory leak, we just create a lot of young garbage on every pulse.
I looked at heap dump files from NodeMemory.TreeItem and I see that there are a lot of TreeCell
objects being created (TreeView$12). I have instrumented TreeCell constructor and printed the number of
time we create TreeCell objects. Here are the results of running NodeMemory.TreeItem with different options.
> cd tests/performance/NodeMemory
> ant
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 1 -allocMax 1
TreeCell objects created: 43
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 10 -allocMax 10
TreeCell objects created: 211
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 20 -allocMax 20
TreeCell objects created: 421
> java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar" nodememory.TreeItemTest -render true -allocCnt 100 -allocMax 100
TreeCell objects created: 2101
It looks like we do some unnecessary allocations which significantly affect performance and footprint.