Тут персонаж один пристал, говорит, что у него в Java есть какой-то «мусожор», а вот в Bash такого нет и поэтому от наших скриптов одни проблемы.

Термин «мусожор», видимо, профессиональный и является пресловутым Garbage Collector.

К Java я отношусь ровно: оно меня не трогает, и я его тоже.

Как говорится, одно говно другому не равно. Поэтому хуесосить не буду.

Давай проведём эксперимент:

ps -o rss -p $$
var=$(printf "%s\n" {1..100000})
ps -o rss -p $$
var="bashdays"
ps -o rss -p $$

В первой строчке выводится количество физической памяти в килобайтах, используемой текущим процессом оболочки. У меня выдало 4348.

Во второй строчке записываем в переменную var содержимое от 1 до 100000 с переносом на новую строку.

В третьей строчке снова выводим количество физической памяти. У меня 5276.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Ага, оно стало больше. Было 4348, стало 5276.

В четвёртой строчке перезаписываем var на строку «bashdays» и снова проверяем память.

На этот раз пятая строчка вновь показывает: 4348.

Что и требовалось доказать. Использование памяти увеличивается, а затем снова уменьшается.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Все манипуляции с памятью выполняются на уровне ядра Linux. И нет никакой необходимости рвать жопу и греть голову.

Bash не работает с памятью и объектами так же, как обычные языки программирования.