There are performance implication between reading to vanilla buffer (note, this is not a direct buffer) and using memory mapped buffers - with added cost of some wastage for the 'last page'.
In addition, you always leave the option open for zero copy enhancement in spark.