【发布时间】:2016-12-30 11:41:54
【问题描述】:
我正在用 JavaFX 创建一个非常简单的围棋棋盘游戏。我偶然发现我的应用程序中的内存使用量增加了,在减少了所有不必要的内容之后,似乎即使是 minimal 示例也会导致巨大的内存增长超时,大约 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.drawImage 行时不会出现问题,但这显然不是解决方案。
顺便说一句。我正在使用带有 OpenJDK 8 的 Arch Linux 64 位
【问题讨论】:
-
我不明白的是:您确定要怪 JavaFx 部分吗?你有没有做过任何类型的内存分析来确定你的内存用在了哪里?
-
你在上面看到的是整个程序。仅此而已,所以我不知道除了 JavaFx 是否还有其他不起作用的东西。
-
好吧,如果这真的是整个程序,那么您想添加缺少的部分来完成您的课程。 “几乎完成”仍然不是minimal reproducible example
-
现在我把里面的所有东西都插入了。
-
你的内存设置是什么? -Xmx ?
标签: java memory javafx memory-leaks