Also note the failure conditions of this spillable map. We can still OOM if:

- all of the (M) values for a single key don't fit into memory [technically, all of the M values for a single key hash value, since multiple keys may have the same hash value]
- our size estimation is too inaccurate (hence spark.shuffle.buffer.fraction)