Ява съест все, что вы позволите ему съесть, даже если это не требуется.
Java не агрессивно очищает память. Если вы дадите ему память, она рассчитывает использовать ее для уменьшения загрузки процессора.
Могу ли я повлиять на количество «потерянной» памяти другим способом, чем параметр Xmx?
Вы можете уменьшить минимальный размер, вы можете контролировать, как быстро он растет. На самом деле, есть более 500 параметров для управления GC, но в целом совет заключается в том, чтобы установить как можно меньше, если вы действительно не знаете, что делаете, чтобы не столкнуться с проблемами, которые не произошли бы, если бы вы оставили их в покое.
Главное, что нужно помнить, это то, что ваше время это деньги, а память стоит денег. В какой-то момент не стоит тратить время на попытки сэкономить немного памяти.
На основе средней заработной платы разработчиков и средних цен на память ПК (расходы в вашей организации будут варьироваться)
1 day - 16 GB
1 hour - 2 GB
5 minutes - 160 MB
1 minute - 32 MB
Если вы тратите больше минуты, экономя менее 32 МБ, это, вероятно, того не стоило.
Это часть Java, которую я больше всего ненавижу,
Я ненавижу неправильное использование юнитов, но на самом деле я должен научиться преодолевать это
m - milli
M - Mega
b - bits
B - Bytes
1 MB = 8 Mb = 1000000000 mB = 8000000000 mb