我在将图像加载到我的应用程序时遇到了问题.我正在尝试制作一个简单的图像浏览器.在左边我有一个文件夹列表.单击列表上的文件夹名称后,图像应显示在右侧(流动窗格).每张图片都在带边框的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) 我正在尝试通过 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)