I'm trying to understande MessageToByteEncoder usage. If messages are large, say 32MB then it seems quite costly to copy all data from one ByteBuffer to a new one. Is there something I'm missing here? Is it ok to make reference copies using getSlice instead? I.e. is the original data safe to use or will it be discarded?