January 31st, 2007
자바 Memory Mapped File I/O의 문제점

FileChannel.map을 통해 얻은 MappedByteBuffer는 channel이 close 된다고 unmap되지 않는다. 대신 MappedByteBuffer가 Garbage Collect 되어야 unmap 된다.
문제는 mmap을 통해 ‘list.txt’라는 파일을 읽은 직후 다시 ‘list.txt’에 접근하려고 하면 실패한다. 다음과 같은 오류가 난다(하나도 안 반갑게 한글이다)
요청한 작업은, 사용자가 매핑한 구역이 열려 있는 상태인 파일에서 수행할 수 없습니다
GC되는 시점은 며느리도 모르기 때문에 memory mapping을 바로 해제시킬 방법이 없다. 쩌럽
