Bonjour à tous,
En suivant les tutos Sun javafx, j'ai lancé l'appli UIControls.fx (un petit Stage contenant divers contrôles).
Tout fonctionne très bien sauf que le processeur est occupé à 70% puis très vite 100%. Cette petite scène d'une dizaine de boutons finit sa course à 250Mo

On peut trouver le code directement chez Sun
http://java.sun.com/javafx/1/tutoria.../UIControls.fx

Voilà le code pour ceux qui préfèrent l'indentation du forum :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Slider;
import javafx.scene.control.TextBox;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.animation.Timeline;
import javafx.scene.control.Hyperlink;
 
 
var opacityLevel: Number;
Timeline {
   repeatCount: Timeline.INDEFINITE
   autoReverse: false
   keyFrames: [
     at (0s) {opacityLevel => 0.2},
     at (2s) {opacityLevel => 1.0}
     at (4s) {opacityLevel => 0.2}
   ]
}.play();
 
var group1 = ToggleGroup{};
var group2 = ToggleGroup{};
 
def slider = Slider {
   max: 100
}
Stage {
  title: "Controls (JavaFX sample)"
   scene: Scene {
   width: 510
   height: 400
   content:
      VBox {translateX: 10 translateY: 10 spacing: 20
            content: [
                  HBox {spacing: 5
                     content: [
                       Label {text: "RadioButton:"}
                       VBox{ content:[
                           RadioButton { toggleGroup: group2   text: "First"   
                                         selected: true
                           }
                           RadioButton { toggleGroup: group2   text: "Second" }
                        ]
                       }                    
                       Label {text: "TextBox:"}
                       TextBox {} 
                     ]
                   }
                  HBox {spacing: 5
                     content: [
                       Label {text: "ToggleButton:"}
                       ToggleButton { toggleGroup: group1 text: "Yes" selected: true }
                       ToggleButton { toggleGroup: group1  text: "No" }
                       ToggleButton { toggleGroup: group1   text: "I don't know" 
                                      opacity: bind opacityLevel
                       }
                     ]
                   }  
                  HBox {spacing: 5
                     content: [
                       Label {text: "CheckBox:"}
                       CheckBox { text: "Normal" }
                       CheckBox { text: "Checked"   selected: true }
                       CheckBox { allowTriState: true   text: "Undefined"   defined: false }
                     ]
                   }
                  HBox {spacing: 5
                     content: [
                       Label {text: "Slider:"}
                       slider,
                       Label {text: "Hyperlink:"}
                       Hyperlink { text: "javafx.com"}
                     ]
                   }
                  HBox {spacing: 5
                     content: [
                       Label {text: "ProgressBar:"}
                       VBox{
                           content: [
                               HBox {
                                   content: [
                                       ProgressBar { progress: bind slider.value / slider.max }, 
                                       ProgressIndicator { progress: bind slider.value / slider.max }
                                   ]
                               }          
                               HBox {
                                   content: [
                                       ProgressBar { progress: -1 },
                                       ProgressIndicator { progress: -1 }
                                   ]
                               }
                           ]
                       }
                    ]
                 }            
     ]//content of VBox
   }//VBox
 }//Scene
 
}//Stage
En modifiant le code, on s'aperçoit que ProgressBar et ProgressIndicator avec l'attribut progress à -1 provoquent le "OutOfMemory".

La stack cache le outofmemory vraissemblable (caché derrière un NullPointerException):
Unexpected exception caught in MasterTimer.timePulse():
java.lang.NullPointerException
at com.sun.scenario.effect.impl.sw.sse.SSEBoxShadowPeer.filter(SSEBoxShadowPeer.java:94)
at com.sun.scenario.effect.impl.state.LinearConvolveKernel.filterImageDatas(LinearConvolveKernel.java:351)
at com.sun.scenario.effect.BoxShadow.filterImageDatas(BoxShadow.java:393)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:94)
at com.sun.scenario.effect.Offset.filter(Offset.java:158)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:86)
at com.sun.scenario.effect.DelegateEffect.filter(DelegateEffect.java:65)
at com.sun.scenario.effect.impl.j2d.J2DEffectHelper.render(J2DEffectHelper.java:79)
at com.sun.scenario.scenegraph.EffectFilter.render(EffectFilter.java:25)
at com.sun.scenario.scenegraph.SGNode.renderEffect(SGNode.java:1025)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:840)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:822)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.SGGroup.renderContent(SGGroup.java:325)
at com.sun.scenario.scenegraph.SGNode.doRender(SGNode.java:845)
at com.sun.scenario.scenegraph.SGNode.render(SGNode.java:800)
at com.sun.scenario.scenegraph.JSGPanel.paintComponent(JSGPanel.java:245)
at javax.swing.JComponent.paint(JComponent.java:1006)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:559)
at javax.swing.JComponent.paintChildren(JComponent.java:843)
at javax.swing.JComponent.paint(JComponent.java:1015)
at com.sun.javafx.tk.swing.WindowImpl$2$1.paint(WindowImpl.java:152)
at javax.swing.JComponent._paintImmediately(JComponent.java:4890)
at javax.swing.JComponent.paintImmediately(JComponent.java:4676)
at javax.swing.JComponent.paintImmediately(JComponent.java:4688)
at com.sun.scenario.scenegraph.JSGPanel.repaintDirtyRegions(JSGPanel.java:334)
at com.sun.scenario.scenegraph.JSGPanelRepainter.repaintAll(JSGPanelRepainter.java:122)
at com.sun.scenario.scenegraph.JSGPanelRepainter$FrameDisplay.run(JSGPanelRepainter.java:134)
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:397)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:274)
at com.sun.embeddedswing.EmbeddedEventQueue.doPulse(EmbeddedEventQueue.java:562)
at com.sun.embeddedswing.EmbeddedEventQueue.access$000(EmbeddedEventQueue.java:74)
at com.sun.embeddedswing.EmbeddedEventQueue$2.run(EmbeddedEventQueue.java:465)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.sun.embeddedswing.EmbeddedEventQueue.dispatchEvent(EmbeddedEventQueue.java:440)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)