@nprofile1q... @nprofile1q... That is probably mostly an artefact of coding around the garbage collector. An array of 1M objects with 10 simple values each is 1000001 objects, whereas 10 arrays of 1M simple values each is 10 objects.
You have effectively broken garbage collection, but you have also reduced the number of objects that the collector has to consider so much that even a quite badly coded collector can't do much performance damage.