如何知道内存中的主要场景?

时间:2018-07-07 01:09:32

标签: java javafx memory-leaks

我在JavaFX中创建了具有很多控制器和场景的应用程序。

当我启动MainApp.class时,它将使用startPage.fxml中的Scene创建Stage primaryStage。 有2个按钮可以选择打开firstWindow或secondWindow。

我有2种不同的方式打开Windows 第一个,当我打开firstWindow时,我从startPage返回到MainApp并初始化firstWindow。在MainApp.class中看起来是

public void initFirstWindow() {
    try {

        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource(fxmlFirstWindow));
        rootLayout = (BorderPane) loader.load();
        firstWindow controller = loader.getController();

        Scene scene = new Scene(rootLayout);
        primaryStage.setScene(scene);
        primaryStage.show();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

在FirstWindow.class

 @FXML
private BorderPane root;

public Controller controller;
...

第二种方式,当我按下按钮时,我可以从startPage启动secondWindow

private MainApp main;
private BorderPane rootLayout;
private Stage childrenStage;
@FXML
public void btnSecondWindowOpen(ActionEvent actionEvent) {

        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource(fxmlSecondWindow));
        rootLayout = (BorderPane) loader.load();
        SecondWindow controller = loader.getController();

        Scene scene = new Scene(rootLayout);
        childrenStage = main.getStage();
        childrenStage.setScene(scene);
        childrenStage.show();

}

问题是哪种方法更好,在我启动第一个或第二个Window时是否有内存泄漏?

我写的时候,有很多fxml在第一个/第二个按钮之后打开,所以我需要知道。

0 个答案:

没有答案