В большинстве реализаций JVM метод main
на самом деле не является первым фрагментом кода Java, который выполняется во время запуска JVM.
Обычно многие части полной JRE сами реализуются в Java.Например, большая часть механизма загрузчика классов реализована на чистом Java.Возможно, он даже сможет писать части самого алгоритма сборки мусора в Java.
Из-за этого, возможно, уже есть некоторый мусор из тех системных классов, которые может собирать gc, даже если ваше приложение не создавало мусораall.
Кстати, ваше приложение создает по крайней мере один объект, который подходит для сборки мусора в точке, где вызывается System.gc()
: String
, в котором упоминается свободная память, создается динамически и не удерживаетсяв переменной, так что он вполне может быть скопирован во время вызова System.gc()
.