我在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