저는 JavaFX 응용 프로그램에서 메모리 누수를 해결하기 위해 수 주일 동안 고심하고 있었으며, 생각해 볼 수있는 가장 간단한 응용 프로그램 응용 프로그램을 작성하기로 결정했습니다. JavaFX가 실제로 메모리를 공개 할 수 있다는 것을 증명하기 위해 내가 뭔가 잘못하고 있음을 증명했습니다. 놀랍게도 이것은 메모리를 누설하는 것처럼 보입니다.JavaFX GUI가 메모리를 해제하지 않습니다.
버튼을 클릭 한 후 다음 응용 프로그램에 여전히 javafx.scene.control.Label
힙이있는 이유는 누구에게 조언 할 수 있습니까? 내가 체크 한 방법은 jprofiler와 함께 있었다.
public class MemoryTestApplication extends Application {
@Override
public void start(Stage primaryStage) {
//root pane
final VBox root = new VBox();
//label to remove when button is clicked
final Label label = new Label("Remove Me");
root.getChildren().add(label);
//button to remove label
Button btn = new Button("Remove label");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
root.getChildren().remove(label);
}
});
root.getChildren().add(btn);
//create scene and stage
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}