読者です 読者をやめる 読者になる 読者になる

HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

File.createTempFile() と File.deleteOnExit() のコンボ罠の続きの続き

過去のエントリで、

というのを書いたが、別に「コンボ罠」というわけではないらしい。
以下のようなコードでもプロセスのメモリ使用量はずんずん増えていく。

import java.io.File;

public class Main1 {
    public static void main(String[] args) {
        try {
            File test = File.createTempFile("test",".txt");
            for (long i = 0; true; ++i) {
                if (i % 100 == 0) {
                    if (i % 100000 == 0) {
                        System.out.println("--- " + i + " ---");
                    }
                    Thread.sleep(10);
                }
                test.deleteOnExit();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import java.io.File;

public class Main2 {
    public static void main(String[] args) {
        try {
            for (long i = 0; true; ++i) {
                File test = new File("test.txt");
                test.createNewFile();
                if (i % 100 == 0) {
                    if (i % 100000 == 0) {
                        System.out.println("--- " + i + " ---");
                    }
                    Thread.sleep(10);
                }
                test.deleteOnExit();
                test.delete();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

だったら、あれ(何)でも再現してもよさそうなのだが‥負荷が足りないのだろうか。