0

フォルダーから jpeg 画像 (4 枚の画像) を取得し、それらを 1 つの大きな画像にマージするツールを作成しようとしています。

for (int i = desde; i < hasta + 1; i++) {
            for (int j = 0; j < 4; j++) {
                foto = ImageIO.read(new File("C:/picYou/Pic you_diciembre 06 2012/Pic you_take" + i + "/" + (j + 1) + ".jpg"));
                g.drawImage(foto, 300, 300 + j * (altoFoto + 20), null);
                foto.flush();
                foto = null;
            }
            File output = new File("C:/picYou/" + i + ".jpg");
            ImageIO.write(img, "jpg", output);
            g.finalize();
            g.dispose();
        }

g は graphics2d オブジェクトで、foto は BufferedImage です。

問題は、他の画像をロードする前に画像をフラッシュして null にしても、画像が使用するメモリが解放されないことです。ご覧のとおり、すべての画像が「foto」に読み込まれますが、より効率的にする方法はありますか? ありがとう!

4

1 に答える 1

2

メモリは、オンデマンドではなく、必要なときにガベージ コレクターによって解放されます。

メモリ リークがあるかどうかを確認したい場合は、VisualVM を使用して、フル GC の後でのみメモリの使用量を確認することをお勧めします。

于 2013-01-16T15:44:36.460 に答える