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

165% (182 mb) regression in TreeView-Expand.MAX_MEMORY_USAGE due to memory leak in StyleHelper.pseudoclassMasksByNode in b2752

XMLWordPrintable

      There is a huge memory leak in TreeViewSkin appeared in graphics-scrum build #2752.
      Controls.TreeView-Expand benchmark started to consume ~230 Mb when running just for 30 seconds.
      For #2751 it was about 36 mb.

      This lead to
      1) 165% (182 mb) regression in max_memory_usage for TreeView-Expand benchmark as well as to 20% FPS regression.
      2) 13% (8,330 objects) regression in NodeMemory.TreeItem


      Heap dump analysis shows that com.sun.javafx.css.StyleHelper.pseudoclassMasksByNode consumes 28Mb (from total 32mb).
      Heap histogram also shows that there are:
      - 1,809 TreeCellSkin objects
      - 1,809 TreeViewSkin$10 objects
      - 3,627 StackPane objects

      which in particular are keys of pseudoclassMasksByNode table.

      The number of this objects constantly grows on each test iteration.
      See TreeView_histogram_32m_64m_diff.JPG for more details.

      The issue is still presented in latest graphics-scrum build #2772 which contains fix for
      RT-15344 "Memory leak in PaintRunnable: root.removed is not cleared".

      Aurora link:
      http://aurora.russia.sun.com/performance/faces/ChessBoard.xhtml?reportName=FX2-graphics-scrum&parameters=%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%29OR%28benchmarkresults.name+%3D+%27NodeMemory.TableView.objects_count%27%29OR%28benchmarkresults.name+%3D+%27NodeMemory.TableViews.objects_count%27%29OR%28benchmarkresults.name+%3D+%27NodeMemory.TreeItem.objects_count%27%29OR%28benchmarkresults.name+%3D+%27NodeMemory.TreeView.objects_count%27%29%5Brefrelease%5D2.0%5Brefbuild%5D%3D+%272751%27%5Brefjdkrelease%5D1.6.0_23%5Brelease%5D%28pr.product.productRelease+IS+NOT+NULL%29%5Bbuild%5D%28pr.product.build+%3D+%272751%27%29OR%28pr.product.build+%3D+%272752%27%29%5Bjdkrelease%5D%28jdk.product.productRelease+IS+NOT+NULL%29&splitting=%5BX+axis%5DfxConf%2C+metricName%5BComplement%5Dbenchmark%2C+jdkBuild%2C+jdk%5BZ+axis%5Dos%2C+hwclass%2C+jdkRelease%2C+benchmarkSuite%5BY+axis%5DbenchmarkName%2C+benchmarkConf%2C+fxRelease%2C+fxBuild&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=

      Steps to run the test:
      > java -cp "..." -Xmx32m -verbose:gc -XX:+HeapDumpOnOutOfMemoryError TreeViewExpandPerfTest

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

              Created:
              Updated:
              Resolved:
              Imported: