我在Linux下遇到了JavaFX的严重问题。也许有人知道解决方案或解决方法:
症状:
经过测试的Linux版本:
经测试的硬件:
经过测试的JDK:Oracle JDK 8.91,OpenJDK 1.8.0_91和OpenJfx 8.
在Windows机器上,JavaFx应用程序运行没有问题。即使在Windows主机下运行在VmWare中的Linux客户机上,JavaFx应用程序也可以在没有资源泄漏的情况下运行。
即使您使用常量对象并更改这些对象的可见性,GUI上的每次更改都会出现资源泄漏。
重现泄漏的示例程序:
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class HelloWorld extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) {
Label lblTick = new Label("Tick");
GridPane pane = new GridPane();
pane.add(lblTick, 0, 0);
KeyFrame kf = new KeyFrame(Duration.millis(100),
e -> lblTick.setVisible(!lblTick.isVisible()));
Timeline tl = new Timeline(kf);
tl.setCycleCount(Animation.INDEFINITE);
tl.play();
Scene scene = new Scene(pane, 30, 30);
stage.setScene(scene);
stage.show();
}
}
感谢任何帮助。
我找到了这个错误的原因和解决方法:
该错误也包含在JDK 9中。
我将此报告为Oracle的错误。