don't use weakreference
let mmap return a long instead of a bytebuffer