java non-heap key-value cache using ByteBuffer.allocateDirect