Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8125731

8.0-controls-scrum-h138: up to 27% footprint increase

XMLWordPrintable

      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&parameters=%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. Fixed RT-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.

            dgrieve David Grieve
            epavlova Ekaterina Pavlova
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: