有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    有很多关于Linux上JavaFX内存泄漏的错误报告。 例如JDK-8156051JDK-8161997。 要验证是否被此错误击中,请尝试使用-Dprism.order=sw运行程序,并查看该错误是否持续存在