Creé una aplicación de muestra que provoca una pérdida de memoria.Fuga de memoria de JavaFX 2.0 al crear escenas múltiples
El problema es que necesito "volver a cargar" las escenas. Si tengo dos escenas (Bar y Foo) con un botón cada una (ButtonBar y ButtonFoo), los botones cambian la escena actual creando una nueva. Si permanezco haciendo clic en ButtonBar y ButtonFoo durante 5 minutos (o menos), el consumo de memoria de ese programa simple aumenta y aumenta.
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
}
}
El Foo.java es el mismo cambio de fxml carga.
El fxml contiene sólo un botón:
<Button id="buttonBar" layoutX="126" layoutY="90" text="Bar!" onAction="#toFoo" fx:id="buttonBar" />
¿Hay un verdadero problema de fugas de memoria? ¿Alguien sabe otra forma de hacer esto? Quiero que esta aplicación se mantenga viva y haciendo cambios para siempre, como un servicio. Gracias
Sip. Cualquier interacción con Scene Builder aumenta la memoria de forma exponencial ... esta es la última versión descargada del sitio de Java. WTF está pasando aquí? Esto es 2 años después de su publicación ... – crush