I'm not so sure you test is comprehensive enough to explain Java compiler logic.  It might assume it simply has enough space and not have to be concerned with trying to fit everything into the smallest memory space possible and perhaps such determination of reuse is a performance impact somehow whereas blind usage of additional free memory is cheap and easy.