A `double[]` of length 999 and a `double[]` of length 1001 are allocated. Which heap does each land on, and why does the boundary fall there?
var a = new double[999]; // 999 * 8 bytes + overhead
var b = new double[1001]; // 1001 * 8 bytes + overhead