Ну, вы могли бы спорить о многих вещах, но я думаю, что правильный ответ - "кого это волнует?" Ответ на ваш вопрос о том, что максимум с вашей конфигурацией, составляет «около 15 миллионов». Если вы действительно хотите беспокоиться о выделении кучи до последних 4 байтов, запрограммируйте на ассемблере ...
P.S. Вещи, которые могли бы происходить, включают объекты, используемые на ранних этапах в потоке обслуживания, который становится сборщиком мусора, когда программа немного запускается. Потенциально возможен еще один феномен JIT-оптимизации, на который намекал другой автор: есть некоторые потоки, которые начинают выделять небольшие объекты в куче, а затем в какой-то момент оптимизируются JIT для «распределения» их в регистрах / стеке. Но, честно говоря, если вы не обнаружите, что размер массива, который вы можете выделить, внезапно уменьшится вдвое, я бы на самом деле не слишком беспокоился об этом.