小编dam*_*ian的帖子

JavaFX - 加载图像和内存问题

我在将图像加载到我的应用程序时遇到了问题.我正在尝试制作一个简单的图像浏览器.在左边我有一个文件夹列表.单击列表上的文件夹名称后,图像应显示在右侧(流动窗格).每张图片都在带边框的HBox中.但是我很快就会收到这样的错误:

java.lang.outofmemoryerror java heap space
Run Code Online (Sandbox Code Playgroud)

我查看了任务管理器 - 如果我只加载6张照片,该应用程序需要500mb的内存!另一件事 - 如果我更改列表中的文件夹,内存仍然被占用.在选择另一个文件夹时,我正在创建新的flowPane

flowPane = new FlowPane();
Run Code Online (Sandbox Code Playgroud)

所以带有所有ImageView的旧版本应该被垃圾收集器删除,对吗?

如何有效管理我的应用中的图像?

  for(int i = 0 ; i < zdjecia.length; i++){
        ImageView iv2 = new ImageView();
        Image image = new Image("file:"+zdjecia[i].getAbsolutePath());
         iv2.setImage(image);
         if( image.getHeight() > image.getWidth()){
                iv2.fitHeightProperty().bind(szerokoscZdjecia.multiply(0.8).subtract(6));
        }else
                iv2.fitWidthProperty().bind(szerokoscZdjecia.subtract(6));

         iv2.setPreserveRatio(true);
         iv2.setSmooth(true);
         iv2.setCache(false);

         String styl = "-fx-border-color: #b2b3b3;"
                 + "-fx-border-width: 2;";

         HBox boxNaFotke = new HBox();
         boxNaFotke.prefWidthProperty().bind(szerokoscZdjecia);
         boxNaFotke.prefHeightProperty().bind(szerokoscZdjecia.multiply(0.8));
         boxNaFotke.setAlignment(Pos.CENTER);
         boxNaFotke.setStyle(styl);
         boxNaFotke.getChildren().add(iv2);
         fotki.add(boxNaFotke);
         flowPane.getChildren().add(boxNaFotke);
    }
Run Code Online (Sandbox Code Playgroud)

java memory load javafx image

6
推荐指数
1
解决办法
1889
查看次数

矩阵乘法向量 OpenMP C

我正在尝试通过 C (OpenMP) 中的向量乘法来编写 Matrix 但是当我添加处理器时我的程序会变慢......

1 proc - 1,3 s
2 proc - 2,6 s
4 proc - 5,47 s
Run Code Online (Sandbox Code Playgroud)

我在我的电脑(核心 i5)和我们学校的集群上测试了这个,结果是一样的(程序变慢)

这是我的代码(矩阵是 10000 x 10000),向量是 10000:

double start_time = clock();
#pragma omp parallel private(i) num_threads(4)
{
    tid = omp_get_thread_num();
    world_size = omp_get_num_threads();
    printf("Threads: %d\n",world_size);

    for(y = 0; y < matrix_size ; y++){
        #pragma omp parallel for private(i) shared(results, vector, matrix)
        for(i = 0; i < matrix_size; i++){
                results[y] = results[y] + vector[i]*matrix[i][y];   
        }
    }
}
double end_time = …
Run Code Online (Sandbox Code Playgroud)

c openmp

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

image ×1

java ×1

javafx ×1

load ×1

memory ×1

openmp ×1