我在JavaFX中創建了一個相當簡單的Go棋盤遊戲。我偶然發現在我的應用程序中增加了內存使用量,並且在減少了不必要的部分之後,似乎即使是最後的例子也會導致超時的大量內存增長,其大約爲012到30MB/s的的。Javafx在繪製圖像時增加內存使用量
下面的代碼:
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.drawImage線不會出現問題,但是這顯然不是一個解決方案。
Btw。我在OpenJDK 8上使用Arch Linux 64位版本
我不明白:你確定JavaFx的部分是責怪?你有沒有做過任何類型的記憶分析來確定你的記憶力在哪裏? – GhostCat
你上面看到的是整個程序。除此之外沒有什麼比這更重要的了,所以我不知道除了JavaFx之外,是否還有其他的東西沒有用。 –
好吧,如果那真的是整個程序,那麼你想添加缺少的部分來完成你的課程。 「幾乎完整」仍然不是[mcve] – GhostCat