RPC server first serializes RPC response to a ByteArrayOutputStream and then creates a new array to write to socket. For most responses the RPC handler is able to write the entire response in-line. If we could use the same buffer used by ByteArrayOutputStream, we can avoid this copy.
As mentioned in
HADOOP-4802, yet another copy could be avoided (in most cases) if we use a static direct buffer for the responses (not proposed for this jira).