続:memory mapped file が消せない

memory mapped file が消せないの続き。
なんか、Java APIドキュメントのFileChannel#map の項目を良く見ると、

バッファとこのバッファが示すマッピングは、バッファ自体がガベージコレクトされるまで有効です。

とか書いてやがる。で、試しに File#delete を call する前に明示的に GC するようにしてみた。

File = new File("foo.txt");
FileInputStream in = new FileInputStream(file);
FileChannel channel = in.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
channel.close();
buffer = null;
System.gc();
System.runFinalization();
if (file.delete()) {
    System.out.println("delete succeeded.");
} else {
    System.out.println("delete fail.");
}

すると、ファイルが消せる*1。finalize の段階でマッピングを開放しているのか?
要するにマッピングを確実に開放するには強制的に GC しろと。つうか、MappedByteBuffer に unmap() とか close() とかのメソッドがないのはなぜだ。

*1:System.runFinalization()は念のため。なくてもファイルは削除された