大雑把に言うと、メモリ上にある使わなくなったデータを定期的に、他のプログラムで使えるように解放するよ!っていう機能。
JavaとかPythonとかの高水準言語は大体ついている。
開発者はメモリ管理を意識する必要がないので、そのあたりの負担が軽いのもメリット。また、メモリ解放忘れによるメモリリーク、多重にメモリを開放してしまうということもない。
だけどその代償として、処理がちょっと悪くなるデメリットがある。
C言語やRustなどはガベージコレクションがない。 Rustはガベージコレクションの代わりにユニークな方法で変数を管理するため、無論処理が早い。(詳しいことは[Rustの所有権]などを参照。)