я про жвм свое мнение вроде неоднократно высказывал - из-за того, что в жаваспеке заложена рефлексия, все абстракции уровня кода перетекают в рантайм. В результате "идиоматичные" вещи компилятор не имеет права соптимизировать.
то есть если ты написал хелловорлд через наследования с виртуальными делегирующими функциями, то компилятор не имеет права сделать из этого простой System.out.println. Он обязан сохранить всю иерархию классов и прочего говнища