私のコードには一時ファイルが削除される場所がたくさんあり、場合によってはこれらの一時ファイルが削除されません。
Java でファイルが作成されたが削除されていない場所を見つける方法はありますか (でメモリ リークを見つけるのと同様C++
)?
File クラスをオーバーライドすることで、開いているファイルをセットに追加し、削除時に削除することができます。そうすれば、特定のポイントでどのファイルが開かれているかを調べることができるはずです。それがあなたが探しているものかどうかはわかりません。
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 アクセスで動作します。