Bash does not start the garbage collector as such. Since there is no concept of links in it, there is no need to find data without links. However, free memory is no longer used.
Here's a simple demonstration of memory usage before and after declaring and overwriting a large variable. Memory usage increases up and down:
ps -o rss -p $$
var=$(printf "%s\n" {1..100000})
ps -o rss -p $$
var="smallstring"
ps -o rss -p $$
source
share