Я создаю приложение JavaFx
, в котором, когда я нажимаю кнопку, он откроет таблицу в новом stage
. Но моя проблема заключается в том, что когда я закрываю stage
этой таблицы, память не освобождается приложением. Что-то не так с javaFX? или я должен сделать что-то еще?Как освободить память после закрытия этапа JavaFX?
Я попытался установить все значение null во время закрытия этого этапа, но память еще не освобождается.
Закрытие события на этапе таблице:
TableView Tableview;
Этап myStage;
this.myStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent t) {
TableController.this.myStage.close();
tableView.getItems().clear();
tableView.getColumns().clear();
tableView = null;
TableController.this.myStage = null;
System.gc();
}
});
У меня есть создать метод, называемый replaceScene загрузить сцену, используя fxml
файл сцены. Он вернет контроллер и установит сцену в Сцена.
public static Initializable replaceScene(String fXml, Stage mystage) {
InputStream in = null;
try {
FXMLLoader loader = new FXMLLoader();
in = Utility.class.getResourceAsStream(fXml);
loader.setLocation(Utility.class.getResource(fXml));
loader.setBuilderFactory(new JavaFXBuilderFactory());
AnchorPane page;
try {
page = (AnchorPane) loader.load(in);
} finally {
in.close();
}
Scene scene = new Scene(page);
mystage.setScene(scene);
return loader.getController();
} catch (Exception ex) {
return null;
}
}
Я первый получаю StreamObject (java.io.InputStream) для FXML файла, а затем передать этот streamObject к FxmlLoader, чтобы загрузить страницу,
в = Utility.class.getResourceAsStream (FXML) ;
Я получаю объект sun.net.www.protocol.jar.JarURLConnection $ JarURLInputStream в в InputStream объекта
У меня есть вопрос. Может быть, это поможет вам. – Ronak
@ Ronak как ваше обновление связано с вашим вопросом? – Kai
Я хочу сказать, как я загружаю сцену, используя входной поток, не освобождая память. – Ronak