Ho creato un'applicazione di esempio che provoca una perdita di memoria.Perdita di memoria JavaFX 2.0 durante la creazione di più scene
Il problema è che ho bisogno di "ricaricare" le scene. Se ho due scene (Bar e Foo) con un pulsante ciascuna (ButtonBar e ButtonFoo), i pulsanti cambiano la scena corrente creando una nuova. Se continuo a fare clic su ButtonBar e ButtonFoo per 5 minuti (o meno), il consumo di memoria di quel semplice programma aumenta sempre più.
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
}
}
Il Foo.java è lo stesso cambiamento de fxml carico.
L'fxml contiene un solo pulsante:
<Button id="buttonBar" layoutX="126" layoutY="90" text="Bar!" onAction="#toFoo" fx:id="buttonBar" />
C'è un vero e proprio problema di memoria? Qualcuno conosce un altro modo per farlo? Voglio che questa app rimanga in vita e faccia cambiamenti per sempre, come un servizio. Grazie
Yep. Qualsiasi interazione con Scene Builder aumenta la memoria in modo esponenziale ... questa è l'ultima versione scaricata dal sito di Java. WTF sta succedendo qui? Questo è 2 anni dopo il tuo post ... – crush