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

8.0-controls-scrum-h186: 22% footprint increase in ChoiceBox control

XMLWordPrintable

      There is 22% regression in NodeMemory.ChoiceBox occurred in build 8.0-controls-scrum-h186.
      Here are the results:
       h185: 501
       h186: 391 objects, -22% (-110 objects)

      The values mean that now we able to create 391 ChoiceBox objects (instead of 501) till we reach memory limit.

      Steps to reproduce:
      > cd JFX_WS/tests/performance/NodeMemory
      > ant
      > java -client -Xms64m -Xmx64m -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/NodeMemory.jar"
        nodememory.ChoiceBoxTest -render true -allocCnt 10

      build 8.0-controls-scrum-h186 contains changes javafx-ui-controls/src/javafx/scene/control/PopupControl.java
      done as part of fix for "RT-27077: Regression: HelloTooltip tooltip is shown in plain text".


      I have created heap dump files for 100 ChoiceBox objects (run the above test with "-render true -allocCnt 10 -maxAlloc 100 -sleep true")
      for builds 185 and 186. Here is the list of additional objects which are created in case build 186 is used:

      Class Name | Objects | Shallow Heap
      -----------------------------------------------------------------------------------
      java.util.HashMap$Entry | +19,828 | +475,872
      long[] | +10,853 | +222,032
      com.sun.javafx.css.PseudoClass$States | +8,722 | +139,552
      java.lang.Object[] | +5,151 | +225,776
      java.util.ArrayList | +5,151 | +123,624
      java.lang.ref.WeakReference | +3,900 | +93,600
      java.util.HashMap$Entry[] | +3,018 | +287,264
      java.util.HashMap | +3,018 | +120,720
      com.sun.javafx.css.CascadingStyle | +2,800 | +89,600
      com.sun.javafx.css.Style | +2,800 | +44,800
      com.sun.javafx.css.PseudoClass$States[] | +2,000 | +65,600
      com.sun.javafx.css.StyleHelper$CalculatedValue | +1,900 | +45,600
      javafx.geometry.Insets | +1,700 | +81,600
      com.sun.javafx.css.StyleHelper$CacheEntry | +1,500 | +36,000
      com.sun.javafx.css.StyleHelper$StyleCacheBucket | +1,500 | +24,000
      javafx.scene.layout.BackgroundFill | +900 | +21,600
      java.lang.String | +840 | +20,160
      javafx.scene.Node$NodeTransformation | +800 | +51,200
      javafx.scene.Node$MiscProperties$9 | +800 | +38,400
      javafx.scene.layout.Region$ShapeProperty | +800 | +32,000
      javafx.scene.Node$NodeTransformation$10 | +800 | +32,000
      javafx.scene.Node$11 | +800 | +32,000
      javafx.scene.Node$12 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$9 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$8 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$7 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$6 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$5 | +800 | +32,000
      javafx.scene.Node$NodeTransformation$4 | +800 | +32,000
      javafx.scene.layout.Region$5 | +800 | +32,000
      javafx.scene.Node$MiscProperties$6 | +800 | +32,000
      javafx.scene.layout.Region$9 | +800 | +25,600
      javafx.scene.layout.Region$8 | +800 | +25,600
      javafx.scene.layout.Region$1 | +800 | +25,600
      com.sun.javafx.css.StyleManager$Key | +800 | +19,200
      com.sun.javafx.geom.RectBounds | +800 | +19,200
      javafx.scene.Node$MiscProperties$9$1 | +800 | +12,800
      com.sun.javafx.css.StyleManager$Cache | +800 | +12,800
      javafx.beans.WeakInvalidationListener | +800 | +12,800
      javafx.scene.paint.Color | +799 | +25,568
      javafx.scene.layout.Background | +700 | +44,800
      com.sun.javafx.css.StyleManager$StyleMap | +700 | +16,800
      com.sun.javafx.UnmodifiableArrayList | +700 | +16,800
      javafx.scene.layout.BackgroundFill[] | +700 | +12,000
      com.sun.javafx.css.StyleHelper$StyleCacheKey | +700 | +11,200
      javafx.scene.Node$MiscProperties | +600 | +33,600
      javafx.scene.Node$10 | +600 | +24,000
      javafx.scene.Node$22 | +600 | +19,200
      javafx.scene.Node$25 | +600 | +14,400
      javafx.scene.layout.StackPane$1 | +500 | +20,000
      javafx.scene.paint.Stop | +400 | +9,600
      javafx.scene.layout.CornerRadii | +300 | +26,400
      com.sun.javafx.collections.ListChangeBuilder | +210 | +5,040
      com.sun.javafx.collections.ListListenerHelper$SingleChange| +210 | +3,360
      com.sun.javafx.collections.ListChangeBuilder$SubChange[] | +210 | +3,360
      com.sun.javafx.collections.TrackableObservableList$1 | +210 | +3,360
      javafx.scene.shape.SVGPath | +200 | +44,800
      com.sun.javafx.geom.transform.Affine3D | +200 | +24,000
      javafx.scene.effect.InnerShadow | +200 | +11,200
      com.sun.javafx.css.StyleHelper | +200 | +11,200
      javafx.scene.Node$6 | +200 | +9,600
      javafx.beans.property.SimpleIntegerProperty | +200 | +8,000
      javafx.scene.effect.InnerShadow$1 | +200 | +8,000
      javafx.scene.effect.InnerShadow$2 | +200 | +8,000
      javafx.scene.effect.InnerShadow$3 | +200 | +8,000
      javafx.scene.effect.InnerShadow$5 | +200 | +8,000
      javafx.scene.effect.InnerShadow$7 | +200 | +8,000
      javafx.scene.effect.InnerShadow$8 | +200 | +8,000
      javafx.scene.Node$8 | +200 | +8,000
      com.sun.javafx.geom.Vec3d | +200 | +6,400
      javafx.scene.effect.InnerShadow$4 | +200 | +6,400
      javafx.scene.effect.InnerShadow$6 | +200 | +6,400
      javafx.scene.shape.SVGPath$2 | +200 | +6,400
      javafx.scene.Node$18 | +200 | +4,800
      javafx.scene.Node$TreeVisiblePropertyReadOnly | +200 | +4,800
      com.sun.javafx.binding.ExpressionHelper$SingleInvalidation| +200 | +3,200
      javafx.scene.Node$5 | +200 | +3,200
      javafx.scene.Node$4 | +200 | +3,200
      java.util.Collections$UnmodifiableRandomAccessList | +122 | +1,952
      javafx.scene.paint.LinearGradient | +100 | +6,400
      com.sun.javafx.css.ParsedValueImpl | +96 | +3,072
      char[] | +43 | +4,416
      com.sun.javafx.css.ParsedValueImpl[] | +38 | +1,080
      com.sun.javafx.css.Size | +38 | +912
      java.util.concurrent.ConcurrentHashMap$HashEntry | +35 | +840
      java.lang.Object | +34 | +272
      com.sun.javafx.css.SimpleSelector | +22 | +704
      java.lang.Class | +18 | +40
      com.sun.javafx.css.Declaration | +12 | +288
      com.sun.javafx.css.Rule$1 | +10 | +400
      com.sun.javafx.css.CompoundSelector | +10 | +240
      com.sun.javafx.css.Rule | +10 | +240
      com.sun.javafx.css.SelectorPartitioning$Partition | +9 | +216
      com.sun.javafx.css.SelectorPartitioning$Slot | +9 | +216
      java.lang.Long | +9 | +144
      com.sun.javafx.css.SelectorPartitioning$StyleClassKey | +9 | +144
      com.sun.javafx.css.SelectorPartitioning$RuleData | +9 | +144
      com.sun.javafx.css.SelectorPartitioning$PartitionKey | +9 | +144
      com.sun.javafx.effect.EffectDirtyBits | +2 | +48
      java.lang.Package | +1 | +48
      javafx.scene.layout.VBox$StyleableProperties$3 | +1 | +32
      javafx.scene.layout.VBox$StyleableProperties$2 | +1 | +32
      javafx.scene.layout.VBox$StyleableProperties$1 | +1 | +32
      com.sun.javafx.effect.EffectDirtyBits[] | +1 | +24
      com.sun.javafx.css.converters.EnumConverter | +1 | +16
      java.lang.Double | +1 | +16
      -----------------------------------------------------------------------------------

            jgiles Jonathan Giles
            epavlova Ekaterina Pavlova
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: