Существует ряд факторов, которые способствуют использованию памяти помимо спецификации кучи.
Важнейшим в вашей ситуации является постоянное поколение.Он используется для загрузки классов для всех зависимостей, необходимых для запуска приложения, и некоторых других вещей.Там не так уж много обходить определенный минимум для данного приложения из-за необходимых классов.Вероятно, вам потребуется около 64 МБ (возможно, больше) для запуска Solr на Jetty.
Вы можете указать максимальный размер, чтобы предотвратить рост постоянного поколения для других вещей, например, добавьте -XX:MaxPermSize=64M
в вашу командную строку.Хотя вряд ли это сильно поможет, и может даже сломать, если потребуется больше.Обычно это почти все используемые классами, которые вам нужны.
Еще одним фактором, влияющим на использование памяти, помимо кучи, является размер стека на поток.Каждый поток в вашем случае будет потреблять 512 КБ.Вы, вероятно, можете безопасно указать 256 Кб, хотя у вас, вероятно, недостаточно потоков, чтобы иметь слишком большое значение.