Ich erstellte eine Beispielanwendung, die ein Speicherleck provoziert.JavaFX 2.0 Speicherverlust beim Erstellen mehrerer Szenen
Das Problem ist, dass ich Szenen "neu laden" muss. Wenn ich zwei Szenen ("Bar" und "Foo") mit je einer Taste (ButtonBar und ButtonFoo) habe, ändert sich mit den Buttons die aktuelle Szene und es entsteht eine neue Szene. Wenn ich ButtonBar und ButtonFoo für 5 Minuten (oder weniger) klicke, wird der Speicherverbrauch dieses einfachen Programms höher und höher.
Bar.java
public class Bar implements Initializable {
@FXML
private Label label;
@FXML
private void toFoo(ActionEvent event) {
try {
Button button = (Button) event.getSource();
Parent root = FXMLLoader.load(getClass().getResource("Foo.fxml"));
Stage currentStage = (Stage) button.getScene().getWindow();
currentStage.setScene(new Scene(root));
} catch (IOException ex) {
Logger.getLogger(Bar.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Die Foo.java ist der gleiche Wechsel de fxml Belastung.
Die fxml nur eine Taste enthalten:
<Button id="buttonBar" layoutX="126" layoutY="90" text="Bar!" onAction="#toFoo" fx:id="buttonBar" />
Gibt es ein reales Speicherleck Problem? Kennt jemand einen anderen Weg dies zu tun? Ich möchte, dass diese App am Leben bleibt und sich für immer verändert, wie ein Dienst. Danke
Yep. Jede Interaktion mit dem Scene Builder erhöht den Speicher exponentiell. Dies ist die neueste Version, die von der Java-Site heruntergeladen wurde. WTF geht hier vor? Das ist 2 Jahre nach deinem Post ... – crush