java Javafx在绘制图像时不断增加的内存使用
我正在用JavaFX创建一个非常简单的棋盘游戏。我无意中发现我的应用程序中内存使用量在不断增长,在减少了所有不必要的内容后,似乎即使是最小的示例也会导致巨大的内存增长超时,大约是50到100MB/s
以下是代码:
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Group root = new Group();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 600, 600));
Canvas canvas = new Canvas(600, 600);
Image bg = new Image("resources/images/background2.jpg", 600, 600, false, false);
root.getChildren().add(canvas);
GraphicsContext gc = canvas.getGraphicsContext2D();
new AnimationTimer() {
@Override
public void handle(long l) {
gc.drawImage(bg, 0, 0, 600, 600, 0, 0, 600, 600);
}
}.start();
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当我删除gc时,问题不会出现。画一条线,但显然,这不是一个解决方案
顺便说一句,我使用的是64位Arch Linux和OpenJDK 8
# 1 楼答案
有很多关于Linux上JavaFX内存泄漏的错误报告。 例如JDK-8156051或JDK-8161997。 要验证是否被此错误击中,请尝试使用
-Dprism.order=sw
运行程序,并查看该错误是否持续存在