画像は処理にあまりにも多くのRAMを使用します

Jachdich:

私は、処理に数千の小さな画像を読み込むと、より大きなマップとしてそれらを表示しようとしています。画像の合計ファイルサイズは一緒に私はプログラムを実行するときしかし、それはすべての私のRAMを使用しており、私も取得130MiBであるOutOfMemoryErrorRAMの使用量としてはは2GiBを超えています。

何がファイルサイズに比べて10倍以上のメモリ使用量が発生し、私はこれを緩和することができます方法はありますか?

EDIT:

サンプルコード

ArrayList<PImage> images = new ArrayList<PImage>();
void setup() {
    for (int i = 0; i < 2000 /*num of images*/; i++) {
        images.add(loadImage(Integer.toString(i) + ".jpg");
    }
}

//in reality, never gets here
void draw() {

    for (PImage i: images) {
        image(i, /*precalculated x and y*/ random(500), random(500));
    }
}
mnistic:

それはそれを説明するだろうので、1:画像はディスク上で圧縮されているが、あなたのプログラムにロードして解凍したときは、10倍の大きさを取得したJPEG圧縮比は10です。

一度彼らはいくつかのプロセス:あなたのコードを改善するために、一度にすべての画像をロードしません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=332517&siteId=1