-
Bug
-
Resolution: Fixed
-
P3
-
8
There is significant footprint and max memory usage increase in build 8.0-controls-scrum-h138.
For example footprint of NodeMemory.Buttons was increased by 27%:
#137: 5,100 objects
#138: 3,700 objects -27% (-1,400.00)
This also reduced runtime performance of some benchmarks.
See all regression in Aurora:
http://aurora.ru.oracle.com/performance/faces/ChessBoard.xhtml?reportName=FX2-controls-scrum¶meters=%5BlatestBuild%5D21140%5BprevBuild%5D21136%5Bshownbenchmarks%5D%281%3D1%29%5Bhwclass%5DWin7-High-Range%5Brefrelease%5D8.0%5Brefbuild%5D21137%5Brefjdkrelease%5D%281%3D1%29%5Brelease%5D8.0%5Bbuild%5D21137%2C21138%5Bjdkrelease%5D%281%3D1%29&splitting=%5BX+axis%5DfxConf%2C+metricName%5BComplement%5Dbenchmark%2C+os%2C+jdkBuild%2C+jdk%5BZ+axis%5Dhwclass%2C+benchmarkSuite%2C+jdkRelease%5BY+axis%5DbenchmarkName%2C+benchmarkConf%2C+fxRelease%2C+fxBuild&reference=%5BOthers%5DfxRelease%2C+fxBuild%2C+os%2C+jdkRelease%2C+jdkBuild%2C+jdk%2C+benchmarkSuite%2C+benchmarkName%2C+metricName%5BReference+Set%5Dbenchmark%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=&filter_override=
I have created heap dump files for 1000 Buttons for builds 137 and 138. Here is the list of additional objects
which are created in case build 138 is used:
======
Class Name | Objects | Shallow Heap
-----------------------------------------------------------------------------
javafx.scene.paint.Color | +6,993 | +223,776
javafx.geometry.Insets | +5,994 | +287,712
javafx.scene.paint.Stop | +5,994 | +143,856
javafx.scene.layout.CornerRadii | +3,996 | +351,648
javafx.scene.layout.BackgroundFill | +3,996 | +95,904
javafx.scene.paint.LinearGradient | +2,997 | +191,808
java.util.ArrayList | +2,997 | +71,928
java.lang.Object[] | +2,997 | +71,928
java.util.Collections$UnmodifiableRandomAccessList | +2,997 | +47,952
javafx.scene.Node$NodeTransformation | +1,998 | +127,872
javafx.scene.Node$MiscProperties$9 | +1,998 | +95,904
javafx.scene.Node$12 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$7 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$5 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$6 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$8 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$4 | +1,998 | +79,920
javafx.scene.Node$MiscProperties$6 | +1,998 | +79,920
javafx.scene.Node$10 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$9 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$10 | +1,998 | +79,920
java.lang.ref.WeakReference | +1,998 | +47,952
javafx.scene.Node$MiscProperties$9$1 | +1,998 | +31,968
javafx.beans.WeakInvalidationListener | +1,998 | +31,968
com.sun.javafx.binding.ExpressionHelper$SingleChange| +1,001 | +24,024
java.util.HashMap$Entry | +1,001 | +24,024
javafx.scene.layout.Background | +999 | +63,936
javafx.scene.Node$MiscProperties | +999 | +55,944
javafx.scene.shape.Shape$StrokeAttributes | +999 | +47,952
javafx.scene.Node$11 | +999 | +39,960
javafx.scene.control.Labeled$4 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$2 | +999 | +39,960
javafx.scene.layout.Region$5 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$3 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$8 | +999 | +39,960
javafx.scene.layout.Region$ShapeProperty | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$4 | +999 | +39,960
javafx.scene.text.Text$TextAttribute$1 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$6 | +999 | +39,960
javafx.scene.control.Labeled$8 | +999 | +39,960
javafx.scene.shape.Shape$2 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$5 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$1 | +999 | +39,960
javafx.scene.shape.Shape$3 | +999 | +31,968
javafx.scene.layout.Region$10 | +999 | +31,968
javafx.scene.layout.Region$8 | +999 | +31,968
javafx.scene.Node$22 | +999 | +31,968
javafx.scene.layout.BackgroundFill[] | +999 | +31,968
javafx.scene.text.Text$TextAttribute$4 | +999 | +31,968
javafx.scene.layout.Region$1 | +999 | +31,968
javafx.scene.layout.Region$9 | +999 | +31,968
com.sun.javafx.UnmodifiableArrayList | +999 | +23,976
char[] | +2 | +88
java.lang.String | +2 | +48
-----------------------------------------------------------------------------
Build 8.0-controls-scrum-h138 contains the following changes:
1. branch merge (detail)
2.RT-26554: if an inline style changes, clear the style cache so new styles will be recalculated. (detail)
3. FixedRT-23878: -fx-ellipsis-string doesn't apply after setStyle (detail)
To reproduce the issue run for example NodeMemory.Button:
> cd JFX_WS/tests/performance/NodeMemory
> ant
> java -Xms64m -Xmx64m -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar"
nodememory.NodeMemoryTest -shape button -render true -allocMax 1000
to create heap dump file run with additional argument "-sleep true" and then use jmap to create heap dump file.
For example footprint of NodeMemory.Buttons was increased by 27%:
#137: 5,100 objects
#138: 3,700 objects -27% (-1,400.00)
This also reduced runtime performance of some benchmarks.
See all regression in Aurora:
http://aurora.ru.oracle.com/performance/faces/ChessBoard.xhtml?reportName=FX2-controls-scrum¶meters=%5BlatestBuild%5D21140%5BprevBuild%5D21136%5Bshownbenchmarks%5D%281%3D1%29%5Bhwclass%5DWin7-High-Range%5Brefrelease%5D8.0%5Brefbuild%5D21137%5Brefjdkrelease%5D%281%3D1%29%5Brelease%5D8.0%5Bbuild%5D21137%2C21138%5Bjdkrelease%5D%281%3D1%29&splitting=%5BX+axis%5DfxConf%2C+metricName%5BComplement%5Dbenchmark%2C+os%2C+jdkBuild%2C+jdk%5BZ+axis%5Dhwclass%2C+benchmarkSuite%2C+jdkRelease%5BY+axis%5DbenchmarkName%2C+benchmarkConf%2C+fxRelease%2C+fxBuild&reference=%5BOthers%5DfxRelease%2C+fxBuild%2C+os%2C+jdkRelease%2C+jdkBuild%2C+jdk%2C+benchmarkSuite%2C+benchmarkName%2C+metricName%5BReference+Set%5Dbenchmark%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=&filter_override=
I have created heap dump files for 1000 Buttons for builds 137 and 138. Here is the list of additional objects
which are created in case build 138 is used:
======
Class Name | Objects | Shallow Heap
-----------------------------------------------------------------------------
javafx.scene.paint.Color | +6,993 | +223,776
javafx.geometry.Insets | +5,994 | +287,712
javafx.scene.paint.Stop | +5,994 | +143,856
javafx.scene.layout.CornerRadii | +3,996 | +351,648
javafx.scene.layout.BackgroundFill | +3,996 | +95,904
javafx.scene.paint.LinearGradient | +2,997 | +191,808
java.util.ArrayList | +2,997 | +71,928
java.lang.Object[] | +2,997 | +71,928
java.util.Collections$UnmodifiableRandomAccessList | +2,997 | +47,952
javafx.scene.Node$NodeTransformation | +1,998 | +127,872
javafx.scene.Node$MiscProperties$9 | +1,998 | +95,904
javafx.scene.Node$12 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$7 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$5 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$6 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$8 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$4 | +1,998 | +79,920
javafx.scene.Node$MiscProperties$6 | +1,998 | +79,920
javafx.scene.Node$10 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$9 | +1,998 | +79,920
javafx.scene.Node$NodeTransformation$10 | +1,998 | +79,920
java.lang.ref.WeakReference | +1,998 | +47,952
javafx.scene.Node$MiscProperties$9$1 | +1,998 | +31,968
javafx.beans.WeakInvalidationListener | +1,998 | +31,968
com.sun.javafx.binding.ExpressionHelper$SingleChange| +1,001 | +24,024
java.util.HashMap$Entry | +1,001 | +24,024
javafx.scene.layout.Background | +999 | +63,936
javafx.scene.Node$MiscProperties | +999 | +55,944
javafx.scene.shape.Shape$StrokeAttributes | +999 | +47,952
javafx.scene.Node$11 | +999 | +39,960
javafx.scene.control.Labeled$4 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$2 | +999 | +39,960
javafx.scene.layout.Region$5 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$3 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$8 | +999 | +39,960
javafx.scene.layout.Region$ShapeProperty | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$4 | +999 | +39,960
javafx.scene.text.Text$TextAttribute$1 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$6 | +999 | +39,960
javafx.scene.control.Labeled$8 | +999 | +39,960
javafx.scene.shape.Shape$2 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$5 | +999 | +39,960
javafx.scene.shape.Shape$StrokeAttributes$1 | +999 | +39,960
javafx.scene.shape.Shape$3 | +999 | +31,968
javafx.scene.layout.Region$10 | +999 | +31,968
javafx.scene.layout.Region$8 | +999 | +31,968
javafx.scene.Node$22 | +999 | +31,968
javafx.scene.layout.BackgroundFill[] | +999 | +31,968
javafx.scene.text.Text$TextAttribute$4 | +999 | +31,968
javafx.scene.layout.Region$1 | +999 | +31,968
javafx.scene.layout.Region$9 | +999 | +31,968
com.sun.javafx.UnmodifiableArrayList | +999 | +23,976
char[] | +2 | +88
java.lang.String | +2 | +48
-----------------------------------------------------------------------------
Build 8.0-controls-scrum-h138 contains the following changes:
1. branch merge (detail)
2.
3. Fixed
To reproduce the issue run for example NodeMemory.Button:
> cd JFX_WS/tests/performance/NodeMemory
> ant
> java -Xms64m -Xmx64m -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar"
nodememory.NodeMemoryTest -shape button -render true -allocMax 1000
to create heap dump file run with additional argument "-sleep true" and then use jmap to create heap dump file.