-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
8
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
-----------------------------------------------------------------------------------
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 "
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
-----------------------------------------------------------------------------------