0

私のコードには一時ファイルが削除される場所がたくさんあり、場合によってはこれらの一時ファイルが削除されません。

Java でファイルが作成されたが削除されていない場所を見つける方法はありますか (でメモリ リークを見つけるのと同様C++)?

4

2 に答える 2

1

File クラスをオーバーライドすることで、開いているファイルをセットに追加し、削除時に削除することができます。そうすれば、特定のポイントでどのファイルが開かれているかを調べることができるはずです。それがあなたが探しているものかどうかはわかりません。

于 2013-10-15T09:12:21.563 に答える
0

SecurityManagerこれは「きれいな」ソリューションではありませんが、カスタムを使用して を探すことができますFilePermission

private static class FileSecurityManager extends SecurityManager {

    @Override
    public void checkPermission(Permission perm) {
        if (perm instanceof FilePermission) {
            System.out.println(perm);
        }

        // super.checkPermission(perm);
    }

}


public static void main(String[] args) throws Exception {
    System.setSecurityManager(new FileSecurityManager());

    Files.delete(Files.createTempFile(null, null));
    File.createTempFile("tempfile", null).delete();
}

この例は、ファイルシステムへの標準 IO および NIO アクセスで動作します。

于 2013-10-15T15:22:13.180 に答える